이슈 

- pandas 모듈로 엑셀파일 로드시 하기 에러발생시

import pandas as pd

raw_data = pd.read_excel('./data/teenage_mental.xls')
ImportError                               Traceback (most recent call last)
<ipython-input-4-7fe267b63e94> in <module>()
      1 import pandas as pd
      2 
----> 3 raw_data = pd.read_excel('./data/teenage_mental.xls')

4 frames
/usr/local/lib/python3.7/dist-packages/pandas/compat/_optional.py in import_optional_dependency(name, extra, errors, min_version)
    139                 return None
    140             elif errors == "raise":
--> 141                 raise ImportError(msg)
    142 
    143     return module

ImportError: Pandas requires version '1.2.0' or newer of 'xlrd' (version '1.1.0' currently installed).

---------------------------------------------------------------------------
NOTE: If your import is failing due to a missing package, you can
manually install dependencies using either !pip or !apt.

To view examples of installing some common dependencies, click the
"Open Examples" button below.
---------------------------------------------------------------------------

 

방법 

하기 명령 실행후 runtime 재시작 

!pip install --upgrade xlrd

 

'머신러닝' 카테고리의 다른 글

colab 그래프에서 한글설정  (0) 2022.05.11

Colab에서 한글이 깨져보이는 경우 

 

!apt-get update -qq
!apt-get install fonts-nanum* -qq
import matplotlib.pyplot as plt
%matplotlib inline 

import matplotlib as mpl

plt.rcParams['axes.unicode_minus'] = False 
path = '/usr/share/fonts/truetype/nanum/NanumGothicEco.ttf'
font_name = mpl.font_manager.FontProperties(fname=path).get_name()

mpl.rc('font', family=font_name)
mpl.font_manager._rebuild()
plt.plot([0,1], [0,1])
plt.title('한글 테스트')
plt.show()

 

'머신러닝' 카테고리의 다른 글

colab xlrd오류 대응  (0) 2022.05.11

https://github.com/ReactiveX/RxSwift

 

ReactiveX/RxSwift

Reactive Programming in Swift. Contribute to ReactiveX/RxSwift development by creating an account on GitHub.

github.com

 

RxSwift는 Swfit로 작성된 반응형 익스텐션 버전입니다.

Observable을 만들어 스트림에서 값 및 기타 이벤트를 구독하여 로직을 분리시킬 수 있고

비동기 및 함수적 스타일 연산자를 사용하여 를 사용하여 데이터를 참조하는 방법을 제공합니다.

 

1. pod 설정

pod 'RxSwift', '6.0.0-rc.2'
pod 'RxCocoa', '6.0.0-rc.2'

 

2. Observable 만들기 

static func fetchLotto(_ order: Int) -> Observable<Lotto?> {
        return Observable.create() { emitter in
            let url = URL(string: domainUrlString + "?order=" + String(order))!
            let task = session.dataTask(with: url, completionHandler: { (data: Data?, response: URLResponse?, err: Error?) -> Void in
                guard err == nil else {
                    emitter.onError(err!)
                    return
                }
                
                let lottoDto = try? JSONDecoder().decode(Lotto.self, from: data!)
                emitter.onNext(lottoDto)
            })
            
            task.resume()
            
            return Disposables.create(){
                task.cancel()
            }
        }
    }

 

3. subscribe 사용하기 

let observable = APIService.fetchLotto(order)
        _ = observable
            .observe(on: MainScheduler.instance)
            .subscribe(onNext: {
                self.lotto = $0
                self.viewUpdate()
            })
            .disposed(by: disposeBag)

 

옵저버블은 3가지 이벤트를 방출합니다.

public enum Event<Element> {
  case next(Element) //정상
  case error(Swfit.Error) //에러
  case completed //완료 
}

 

4. 마무리

위와 같이 행위를 Api를 Observable을 만들고 사용하는 쪽에서 Observable을 return받아 사용할 수 있습니다.

이와 같은 장점은 디자인 아키텍쳐 측면에서 비즈니스 로직을 분리하고 테스트를 별도로 할 수 있고

비동기 행위들을 Observable을 만들어 사용하는 쪽에서 일과된 코드를 유지할 수 있으며 

MVVM구조와 같은 구조에서 화면에서는 ViewModel 데이터에만 집중할 수 있는 장점으로 활용할 수 있습니다. 

 

+ Recent posts