[Python] FinanceDataReader 를 통한 주가 읽기
기존 pandas-datareader 는 잘 구성된 시계열 데이터 수집 라이브러리로 사용되고 있지만, 현재 야후 파이내스가 더 이상 지원되지 않는 등 의 이슈가 있다. FinanceDataReader는 pandas-datareader 를 대체하기 보다 보완하기 위한 목적으로 만들어졌다.
종목 코드
- 거래소별 전체 종목코드: KRX (KOSPI, KODAQ, KONEX), NASDAQ, NYSE, AMEX, S&P 500
가격 데이터
- 해외주식 가격 데이터: AAPL(애플), AMZN(아마존), GOOG(구글) 등
- 국내주식 가격 데이터: 005930(삼성전자), 091990(셀트리온헬스케어) 등
- 각종 지수: KS11(코스피지수), KQ11(코스닥지수), DJI(다우지수), IXIC(나스닥 지수), US500(S&P 5000)
- 환율 데이터: USD/KRX (원달러 환율), USD/EUR(달러당 유로화 환율), CNY/KRW: 위엔화 원화 환율
- 암호화폐 가격: BTC/USD (비트코인 달러 가격, Bitfinex), BTC/KRW (비트코인 원화 가격, 빗썸)
설치
pip install -U finance-datareader
stockCode : 종목 이름으로 종목 코드 받아 오는 함수
sotckMain: 종목이름을 Python Dateframe 으로 만들어 주는 함수
def stockCode(val):
df_krx = fdr.StockListing('KRX')
df_name = df_krx[df_krx['Name'] == val]
symbol = df_name.iloc[0,0]
name = df_name.iloc[0,2]
return symbol, name
def stockMain(val, strFromDay, strToDay):
print("stockMain")
symbol, name = stockCode(val)
title = name + "("+symbol+")"
df = fdr.DataReader(symbol, strFromDay, strToDay)
return df
pltStocknTrend: stockMain 에서 받은 Data Frame 을 그래프로 그려 주는 함수.
이 함수에서는 Data Frame 값을 MinMaxScaler 를 통해 정규화함.
def pltStocknTrend(stockName, s_df, s_KOSPI_df, t_df):
scaled_stock=pd.DataFrame(s_df['Close'])
cointrendT=preprocessing.MinMaxScaler().fit_transform(scaled_stock)
fig = plt.figure(figsize=(16,14))
axes = plt.subplot2grid((4,4),(0,0), rowspan=3,colspan=4)
axes.plot(s_df.index, cointrendT, linewidth=1, label=stockName)
axes.legend()
plt.show()
위 함수들을 이용하여 Kospi 와 삼성 전자의 지수를 그래프로 그렸습니다. 아래 그래프에 google trend 를 이용하여 코로나 검색 량을 추가하였습니다.
'IT > 컴퓨터프로그램' 카테고리의 다른 글
[Python] FinanceDataReader 를 통한 주가 읽기 - 볼린저밴드 (0) | 2022.05.16 |
---|---|
[Python] FinanceDataReader 를 통한 주가 읽기 - 이동 평균선 (1) | 2022.05.16 |
[Python] 구글 트렌드(Google Trends PYTHON API) (0) | 2022.05.16 |
[프로그램] 임베디드 시스템 (Embedded System) (1) | 2022.05.16 |
[PYTHON] 숫자(초)을 시간으로 바꾸기 (0) | 2022.05.16 |