INVESTAR / StockAnalysisInPython

456 stars 413 forks source link

3장 yfinance 라이브러리 관련 #127

Open leemanni opened 2 years ago

leemanni commented 2 years ago

문의 사항 : 3장 pandas, yfinance, pandas_datareader 오류 내용 : 삼성전자와 마이크로소프트 주가비교 하는 구간 오류 부분 : get_data_yahoo 메소드 호출부분에서 오류 사용 코드 : pdr.get_data_yahoo('005930.KS', start='2020-01-01')

안녕하세요 작가님 책을 보며 공부중인 주니어 개발자입니다.

다름이 아니라, 책 내용대로 코딩을 하고 난 뒤 실행해본 결과 실행이 되지 않았습니다.

라이브러리도 책 대로 설치가 잘 된 상황입니다.

또한 작가님 깃허브 코드를 수행해도 수행이 되지 않습니다.

학인 부탁드려도 될까요?

denishong commented 2 years ago

저도 동일하게 이 부분에서 동작이 안돼서 문제점을 올려놨는데요. 혹시 문제 발생 시 로그를 올려주시면 같이 답변 주시는데 도움이 될 것 같습니다. 아래 제가 올린 부분 참조로 공유드립니다. 로그 내용이 같은 지 한번 확인 해 보시고 답변 주시면 좋겠습니다.

https://github.com/INVESTAR/StockAnalysisInPython/issues/128

leemanni commented 2 years ago

C:\Users \AppData\Local\Programs\Python\Python38\lib\site-packages\pandas_datareader\compat__init__.py:7: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead. from pandas.util.testing import assert_frame_equal Backend TkAgg is interactive backend. Turning interactive mode on. Exception in thread Thread-7: Traceback (most recent call last): File "C:\Users \AppData\Local\Programs\Python\Python38\lib\threading.py", line 932, in _bootstrap_inner self.run() File "C:\Users \AppData\Local\Programs\Python\Python38\lib\threading.py", line 870, in run self._target(*self._args, *self._kwargs) File "C:\Users \AppData\Local\Programs\Python\Python38\lib\site-packages\multitasking__init__.py", line 102, in _run_via_pool return callee(args, kwargs) File "C:\Users \AppData\Local\Programs\Python\Python38\lib\site-packages\yfinance\multi.py", line 166, in _download_one_threaded data = _download_one(ticker, start, end, auto_adjust, back_adjust, File "C:\Users \AppData\Local\Programs\Python\Python38\lib\site-packages\yfinance\multi.py", line 178, in _download_one return Ticker(ticker).history(period=period, interval=interval, File "C:\Users \AppData\Local\Programs\Python\Python38\lib\site-packages\yfinance\base.py", line 155, in history data = data.json() File "C:\Users \AppData\Local\Programs\Python\Python38\lib\site-packages\requests\models.py", line 897, in json return complexjson.loads(self.text, kwargs) File "C:\Users \AppData\Local\Programs\Python\Python38\lib\json__init__.py", line 357, in loads return _default_decoder.decode(s) File "C:\Users \AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "C:\Users \AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

INVESTAR commented 2 years ago

제가 3장 코드를 실행해 봤을 때에는, leemanni 님과 동일하게 FutureWarning: pandas.util.testing is deprecated 메시지가 뜨긴 해도 데이터는 정상적으로 가져오는 것을 확인했습니다. pdr

만일 FutureWarning 메시지가 보기 싫으시면 아래 파일의 7번째 라인을 아래처럼 수정하시면 됩니다. C:\Users \AppData\Local\Programs\Python\Python38\lib\site-packages\pandas_datareader\compat__init__.py:7: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead. init

제 개인적인 의견으로는 python과 pandas, pandas_datareader, yfinance를 새로 설치해 보시는 게 어떨까 싶습니다.

denishong commented 2 years ago

@INVESTAR (김황후 님)의견대로 pandas, pandas_datareader, yfinance를 하나씩 uninstall후 다시 install해서 테스트 해 보니 yfinance를 다시 설치했을 때 정상적으로 동작하는 걸 확인 했습니다. 결론적으로 지금은 정상적으로 잘 동작합니다.

참고로 재설치 했을 때 각 library버젼정보를 확인 해 보니 yfinance만 version이 update되고 나머지는 버젼에 대한 정보 변화가 없었습니다.

[재 설치 전 버젼 정보 ] pandas 1.0.1 pandas-datareader 0.8.1 yfinance 0.1.54

[재 설치 후 버젼 정보] pandas 1.0.1 pandas-datareader 0.8.1 yfinance 0.1.70

yfinance 0.1.62에서 개선이 된 것 같아 보입니다. upgrade는 아래와 같이 하면 되네요. 참고로 공유드립니다. $ pip install yfinance --upgrade --no-cache-dir

참고 : https://github.com/ranaroussi/yfinance/issues