마켓 데이터 크롤링 - 개별주식 가격 데이터 (morningstar)
마켓 데이터 크롤링 - 개별주식 가격 데이터 (morningstar)¶
- 개별 종목 가격 데이터: 야후 파이낸스, 구글 파이낸스 대체
- pandas_datareader + morningstar
- MultiIndex 가격 데이터와 차트 그리기
2018 FinanceData http://fb.com/financedata¶
모듈 임포트와 버전 확인¶
In [1]:
import pandas as pd
pd.__version__
Out[1]:
In [2]:
import pandas_datareader as pdr
pdr.__version__
Out[2]:
pandas_datareader로 다양한 시계열 데이터들을 손쉽게 가져올 수 있다. 특히, 개별 종목의 과거 주식 가격을 가져오기 위해 구글 파이낸스와 야후 파이낸스를 많이 사용했다. 그러나, 현재 구글 파이낸스는 UNSTABLE_WARNING 를 내고, 야후 파이낸스는 더 이상 사용되지 않는다 (deprecated). 2018년 4월 현재 버전은 (pandas 0.22.0, pandas_datareader 0.6.0) 이다.
구글 파이낸스의 경우,
import pandas_datareader as pdr
df = pdr.DataReader('AAPL', 'google', '2018-01-01', '2018-04-30')
UNSTABLE_WARNING 과 'RemoteDataError: Unable to read URL' 에러를 낸다.
야후 파이낸스의 경우,
import pandas_datareader as pdr
df = pdr.DataReader('AAPL', 'yahoo', '2018-01-01')
ImmediateDeprecationError 에러를 낸다.
morningstar¶
새로운 버전 (0.6.0)에 몇몇 데이터 소스가 추가 되었다. (Tiingo, Robinhood, Morningstar, IEX, 등)
이중 Morningstar 를 사용하여 이전의 구글 파이낸스, 야후 파이낸스를 대체할 수 있다.
국내 주식 종목은 종목코드 앞에 "XRKX:" 를 붙여준다
- XKRX:005930 - 삼성전자
- XKRX:091990 - 셀트리온헬스케어
In [3]:
import pandas_datareader as pdr
# 애플(AAPL) 2018년 1Q 가격 데이터
df = pdr.DataReader('AAPL', 'morningstar', '2018-01-01', '2018-03-30')
df.tail()
Out[3]:
In [4]:
# 삼성전자(XKRX:005930) 2018년 1Q 가격 데이터
df = pdr.DataReader('XKRX:005930', 'morningstar', '2010-01-01', '2018-03-30')
df.tail()
Out[4]:
여러 종목을 한번에 가져오기¶
In [5]:
# 애플(AAPL), 삼성전자(005930) 2017년 1년 데이터를 함께 읽기
df = pdr.DataReader(['AAPL', 'XKRX:005930'], 'morningstar', '2017-01-01', '2017-12-30')
df.head()
Out[5]:
df.unstack()¶
종목과 날짜(Symbol, Date)가 MultiIndex 로 반환 되므로 df.unstack() 을 적절히 활용
In [6]:
df.unstack(level=0).head()
Out[6]:
2017년 삼성전자, 애플 주가 차트¶
In [10]:
%matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (14,6)
plt.rcParams["axes.grid"] = True
In [11]:
df.unstack(level=0)['Close'].plot(subplots=True)
Out[11]:
In [12]:
df.unstack(level=0)['Close'].plot(secondary_y='AAPL')
Out[12]:
댓글
Comments powered by Disqus