[python] FinanceDataReader로 주가 데이터 가져오기

FinanceDataReader

FinanceDataReader

https://github.com/FinanceData/FinanceDataReader

  • FinanceData.KR 에서 만든 오픈소스 금융 데이터 수집기

1. 포함하고 있는 데이터

  • 한국거래소(KRX)에 상장된 주식종목 리스트와 코넥스(비상장)에 있는 주식종목 리스트: 'KRX', 'KOSPI', 'KODAQ', 'KONEX'
  • 글로벌 주식종목 리스트: 'NASDAQ', 'NYSE', 'AMEX' and 'S&P500', 'SSE'(상해), 'SZSE'(심천), 'HKEX'(홍콩), 'TSE'(도쿄)
  • 한국거래소의 상장폐지종목과 관리종목 리스트: 'KRX-DELISTING'(상장폐지종목), 'KRX-ADMINISTRATIVE' (관리종목)
  • 한국, 미국, 일본의 ETF 리스트: 'KR', 'US', 'JP'
  • 주가(KRX): '005930'(삼성전자), '091990'(셀트리온헬스케어) ...
  • 주가(Word wide): 'AAPL', 'AMZN', 'GOOG'
  • 지수: 'KS11'(코스피지수), 'KQ11'(코스닥지수), 'DJI'(다우존스지수), 'IXIC'(나스닥지수), 'US500'(S&P 500지수) ...
  • 환율: 'USD/KRX', 'USD/EUR', 'CNY/KRW' ... (조합가능한 화폐별 환율 데이터 일자별)
  • 가상화폐 가격 데이터: 'BTC/USD' (Bitfinex), 'BTC/KRW' (Bithumb)

2. 설치

In [1]:
# !pip install finance-datareader
# !pip install -U finance-datareader # 업데이트

3. 사용법

In [2]:
# 한국거래소에 상장된 모든 종목 리스트 가져오기
import FinanceDataReader as fdr
df_krx = fdr.StockListing('KRX')
df_krx.head()
Out[2]:
Symbol Market Name Sector Industry ListingDate SettleMonth Representative HomePage Region
0 060310 KOSDAQ 3S 특수 목적용 기계 제조업 반도체 웨이퍼 캐리어 2002-04-23 03월 박종익, 김세완 (각자 대표이사) http://www.3sref.com 서울특별시
1 095570 KOSPI AJ네트웍스 산업용 기계 및 장비 임대업 렌탈(파렛트, OA장비, 건설장비) 2015-08-21 12월 이현우 http://www.ajnet.co.kr 서울특별시
2 006840 KOSPI AK홀딩스 기타 금융업 지주사업 1999-08-11 12월 채형석, 이석주(각자 대표이사) http://www.aekyunggroup.co.kr 서울특별시
3 054620 KOSDAQ APS홀딩스 기타 금융업 인터넷 트래픽 솔루션 2001-12-04 12월 정기로 http://www.apsholdings.co.kr 경기도
4 265520 KOSDAQ AP시스템 특수 목적용 기계 제조업 디스플레이 제조 장비 2017-04-07 12월 김영주 http://www.apsystems.co.kr 경기도
In [3]:
# S&P 500에 등록된 모든 종목 리스트 가져오기
import FinanceDataReader as fdr
df_spx = fdr.StockListing('S&P500')
df_spx.head()
Out[3]:
Symbol Name Sector Industry
0 MMM 3M Company Industrials Industrial Conglomerates
1 ABT Abbott Laboratories Health Care Health Care Equipment
2 ABBV AbbVie Inc. Health Care Pharmaceuticals
3 ABMD ABIOMED Inc Health Care Health Care Equipment
4 ACN Accenture plc Information Technology IT Consulting & Other Services
In [4]:
# 한국거래소에 상장된 종목의 가격 데이터 가져오기
import FinanceDataReader as fdr 
df = fdr.DataReader(symbol='005930', start='2020') # 삼성전자, 2020년~현재
df
Out[4]:
Open High Low Close Volume Change
Date
2020-01-02 55500 56000 55000 55200 12993228 -0.010753
2020-01-03 56000 56600 54900 55500 15422255 0.005435
2020-01-06 54900 55600 54600 55500 10278951 0.000000
2020-01-07 55700 56400 55600 55800 10009778 0.005405
2020-01-08 56200 57400 55900 56800 23501171 0.017921
... ... ... ... ... ... ...
2021-01-04 81000 84400 80200 83000 38655276 0.024691
2021-01-05 81600 83900 81600 83900 35335669 0.010843
2021-01-06 83300 84500 82100 82200 42089013 -0.020262
2021-01-07 82800 84200 82700 82900 32644642 0.008516
2021-01-08 83300 90000 83000 88800 57519442 0.071170

253 rows × 6 columns

In [5]:
import FinanceDataReader as fdr
df = fdr.DataReader(symbol='005930', start='20200101', end='20201231') # 삼성전자, 2020/01/01~2020/12/31 
# df = fdr.DataReader(symbol='005930', start='2020/01/01', end='2020/12/31') # 위와 동일한 결과 
# df = fdr.DataReader(symbol='005930', start='2020-01-01', end='2020-12-31') # 위와 동일한 결과 
df
Out[5]:
Open High Low Close Volume Change
Date
2020-01-02 55500 56000 55000 55200 12993228 -0.010753
2020-01-03 56000 56600 54900 55500 15422255 0.005435
2020-01-06 54900 55600 54600 55500 10278951 0.000000
2020-01-07 55700 56400 55600 55800 10009778 0.005405
2020-01-08 56200 57400 55900 56800 23501171 0.017921
... ... ... ... ... ... ...
2020-12-23 72400 74000 72300 73900 19411326 0.022130
2020-12-24 74100 78800 74000 77800 32502870 0.052774
2020-12-28 79000 80100 78200 78700 40085044 0.011568
2020-12-29 78800 78900 77300 78300 30339449 -0.005083
2020-12-30 77400 81300 77300 81000 29417421 0.034483

248 rows × 6 columns

In [6]:
# start를 지정해주지 않으면 상장일부터, end를 지정해주지 않으면 현재시점까지 데이터를 가져온다.
import FinanceDataReader as fdr 
df = fdr.DataReader(symbol='005930')
df
Out[6]:
Open High Low Close Volume Change
Date
1997-01-29 825 853 814 838 194020 NaN
1997-01-30 851 851 821 838 114020 0.000000
1997-01-31 841 851 837 838 124380 0.000000
1997-02-01 837 844 819 832 56190 -0.007160
1997-02-03 832 880 827 864 177180 0.038462
... ... ... ... ... ... ...
2021-01-04 81000 84400 80200 83000 38655276 0.024691
2021-01-05 81600 83900 81600 83900 35335669 0.010843
2021-01-06 83300 84500 82100 82200 42089013 -0.020262
2021-01-07 82800 84200 82700 82900 32644642 0.008516
2021-01-08 83300 90000 83000 88800 57519442 0.071170

6000 rows × 6 columns

In [7]:
df['Close'].plot();
In [8]:
# 해외주식 주가 데이터 가져오기
import FinanceDataReader as fdr 
df = fdr.DataReader(symbol='AAPL', start='2020') # 애플, 2020년~현재
df
Out[8]:
Close Open High Low Volume Change
Date
2020-01-02 75.09 74.06 75.15 73.80 135650000.0 0.0229
2020-01-03 74.36 74.29 75.14 74.12 146540000.0 -0.0097
2020-01-06 74.95 73.45 74.99 73.19 118580000.0 0.0079
2020-01-07 74.60 74.96 75.22 74.37 111510000.0 -0.0047
2020-01-08 75.80 74.29 76.11 74.29 132360000.0 0.0161
... ... ... ... ... ... ...
2021-01-04 129.41 133.45 133.60 126.80 143300000.0 -0.0247
2021-01-05 131.01 129.00 131.71 128.53 97660000.0 0.0124
2021-01-06 126.60 127.52 131.03 126.47 155090000.0 -0.0337
2021-01-07 130.92 128.41 131.62 127.88 109580000.0 0.0341
2021-01-08 132.05 132.43 132.63 130.23 105160000.0 0.0086

258 rows × 6 columns

In [9]:
# 해외주식 주가 데이터 가져오기
import FinanceDataReader as fdr 
df = fdr.DataReader(symbol='AAPL') # 애플, 상장일~현재
df
Out[9]:
Close Open High Low Volume Change
Date
1980-12-12 0.13 0.13 0.13 0.13 469030000.0 -0.9988
1980-12-15 0.12 0.12 0.12 0.12 175880000.0 -0.0769
1980-12-16 0.11 0.11 0.11 0.11 105730000.0 -0.0833
1980-12-17 0.12 0.12 0.12 0.12 86440000.0 0.0909
1980-12-18 0.12 0.12 0.12 0.12 73450000.0 0.0000
... ... ... ... ... ... ...
2021-01-04 129.41 133.45 133.60 126.80 143300000.0 -0.0247
2021-01-05 131.01 129.00 131.71 128.53 97660000.0 0.0124
2021-01-06 126.60 127.52 131.03 126.47 155090000.0 -0.0337
2021-01-07 130.92 128.41 131.62 127.88 109580000.0 0.0341
2021-01-08 132.05 132.43 132.63 130.23 105160000.0 0.0086

10105 rows × 6 columns

In [10]:
df['Close'].plot();