본문 바로가기

프로그래밍/PyQt5 GUI

61. 주식 데이터

  • FinanceDataReader

개요

한국 주식 가격, 미국 주식 가격, 지수, 환율, 암호화폐 가격, 종목 리스팅 등 금융 데이터 수집 라이브러리 입니다.

pandas-datareader 는 시계열 데이터 수집 라이브러리이지만 거래소별(KRX, NASDAQ, NYSE 등) 전체 종목 코드를

가져오는 기능이 없고 야후 파이낸스, 구글 파이낸스가 지원 않되고 있다.

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

pip install beautifulsoup4

pip install matplotlib    # 챠트 모듈

import FinanceDataReader as fdr
import matplotlib.pyplot as plt

# FinanceDataReader Development Version
print(fdr.__version__)
print("\n\n")

# 종목 데이터 전체 얻기
# 한국
# Symbol                   Stock Exchange
# KRX                      KRX 전체 종목
# KOSPI                    KOSPI 전체 종목
# KOSDAQ                   KOSDAQ 전체 종목
# KONEX                    KONEX 전체 종목

# 미국
# Symbol                    Stock Exchange
# NASDAQ                    나스닥 전체 종목
# NYSE                      뉴욕증권거래소 전체 종목
# AMEX                      아맥스 전체 종목
# SP500(or S&P500)          S&P500 전체 종목

# 한국증권거래소 상장 전체 종목
df_krx = fdr.StockListing('KRX')
print(df_krx.head(len(df_krx)))

# S&P 500 전체 종목
df_spx = fdr.StockListing('SP500')
print(df_spx.head(100))
print(len(df_spx))

# 가격 데이터 - 국내주식
# 단축 코드 (6자리)를 사용
# 코스피 종목 : 068270(셀트리온), 005380(현대차) 등
# 코드닥 종목 : 247540(에코프로비엠), 048260(오스템임플란트) 등

# 셀트리온, 2020년 fdr.DataReader('068270', "2020')
df_068270 = fdr.DataReader("068270", "2020-01-01", "2020-12-31")
print(df_068270.head(30))

# 현대차, 2020년 ~ 현재
df_005380 = fdr.DataReader('005380', '2020-01', '2021-08')
# df_005380['Close'].plot()
# plt.show()

# 애플(AAPL), 2017년
df_aapl = fdr.DataReader('AAPL', '2017')
print(df_aapl.tail(30))

# 아마존(AMZN), 2020년
df_amzn = fdr.DataReader('AMZN', '2020')
# df_amzn.Close.plot()
# plt.show()

# 한국 지수
# 기호                  설명
# KS11                 KOSPI 지수
# KQ11                 KOSDAQ 지수
# KS50                 KOSPI 50 지수
# KS100                KOSPI 100 지수
# KRX100               KRX 100 지수 (한국증권거래소 우량 100 통합주가지수)
# KS200                KOSPI 200 지수

# 미국 지수
# 기호                  설명
# DJI                  다우존스 지수
# IXIC                 나스닥 지수
# US500                S&P 500 지수
# VIX                  S&P 500 VIX (주가 변동성 지수)

# 국가별 주요 지수
# 기호                  설명
# JP225                닛케이 225 선물
# STOXX50E             Euro Stoxx 50
# CSI300               CSI300 중국 지수
# HSI                  항셍(홍콩)
# FTSE                 영국 FTSE
# DAX                  독일 DAX 30
# CAC                  프랑스 CAC 40

# KS11 (KOSPI 지수), 2020년
df_ks11 = fdr.DataReader('KS11', '2020')
# df_ks11.Close.plot()
# plt.show()

# 다우지수, 2021년
df_dji = fdr.DataReader('DJI', '2021')
# df_dji['Close'].plot()
# plt.show()

# 환율
# 기호                  설명
# USD/KRW              달러당 원화 환율
# USD/EUR              달러당 유로화 환율
# USD/JPY              달러당 엔화 환율
# CNY/KRW              위엔화당 원화 환율
# EUR/USD              유로화당 달러 환율
# JPY/KRW              엔화당 원화 환율
# AUD/USD              오스트레일리아화당 달러 환율
# EUR/JPY              유로화당 엔화 환율
# USD/RUB              달러당 루블화 환율

# 원달러 환율, 2021년
df_usdkrw = fdr.DataReader('USD/KRW', '2021')
print(df_usdkrw.Close)

# 암호화폐 가격 (KRW) 암호화폐 원화 가격(빗썸-bitthum)
# 기호                   설명
# BTC/KRW               비트코인 원화 가격
# ETH/KRW               이더리움 원화 가격
# XRP/KRW               리플 원화 가격
# BCH/KRW               비트코인 캐시 원화 가격
# EOS/KRW               이오스 원화 가격
# LTC/KRW               라이트 코인 원화 가격
# XLM/KRW               스텔라 원화 가격

# 암호화폐 가격 (USD) 암호화폐 달러 가격(Bitfinex)
# 기호                   설명
# BTC/USD               비트코인 달러 가격
# ETH/USD               이더리움 달러 가격
# XRP/USD               리플 달러 가격
# BCH/USD               비트코인 캐시 달러 가격
# EOS/USD               이오스 달러 가격
# LTC/USD               라이트 코인 달러 가격
# XLM/USD               스텔라 달러 가격

# 암호화폐 선물
# 기호                   설명
# BT                    비트코인 CME 선물
# MBT                   마이크로 비트코인 CME 선물

# 비트코인 원화 가격 (빗썸), 2021년
df_btckrw = fdr.DataReader('BTC/KRW', '2021')
print(df_btckrw.Close)

# CME 비트코인 선물 가격
df_btc = fdr.DataReader('BT', '2021')
print(df_btc.Close)

print("\n\n")

# 셀트리온 주식 데이터 다루기 pandas(python data analysis library) 형태
# 최종 읽어들인 데이터 df_068270이 pandas DataFrame이 된다.
df_068270 = fdr.DataReader('068270', '2010-01', '2021-08')
print(df_068270.head())           # 가장 과거 부터 데이터 가져오기
print(df_068270.tail())           # 가장 최근 부터 데이터 가져오기
print(df_068270.shape)            # DataFrame 의 Dimension 즉 rows, columns 갯수, 행열 갯수
print(len(df_068270.index))       # rows count, 행 갯수
print(len(df_068270.columns))     # columns count, 열 갯수
print(list(df_068270.index))      # row index list
print(list(df_068270.columns))    # column name list
# iloc 은 row 와 column 을 index 기준으로 조회
# ':' 은 index, column 목록에서 to 의 역할 [0:3, 1:4] 는 index 0부터 3까지, column 1부터 4까지
# ',' 은 index 와 column 을 구분하는 부분이다.
print(df_068270.iloc[0 : 3])      # select 3 row 첫번째 행부터 3개
print(df_068270.iloc[0:3, 1:4])
print(df_068270.iloc[3 :])        # 4번째 행부터 나머지 전체 행
print(df_068270.iloc[0])          # 컬럼별 전체 값 sum
# loc 은 row 와 column 을 label 기준으로 조회
print(df_068270.loc['2010-01-04':, ['Open', 'Close']])      # '2010-01-04' 부터 현재까지 'Open', 'Close' 컴럼 값
print(df_068270.loc[['2010-01-07', '2021-07-26'], ['Open', 'Close']])        # 4번째 행부터 나머지 전체 행
print(df_068270.loc[:, ["Open", "High", "Low", "Close", "Volume", "Change"]])  # 시가, 고가, 저가, 종가, 거래량, 전일 대비 종가

print(df_068270['Close'])        # 종가 전체 인덱스 포함 row
print(df_068270.Close)           # 위와 같은 의미
print(list(df_068270.Close))     # list 변환
print(dict(df_068270.Close))     # dictionary 변환

# df_068270 = df_068270.rename(columns = {"Open" : "시가"})

'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글

63. PyQtGraph 기본 그래프 그리기  (0) 2021.08.12
62. 주가 챠트  (0) 2021.08.12
60. 멀티스레딩  (0) 2021.08.10
59. 이벤트 루프  (0) 2021.08.10
58. 타이머와 스레드  (0) 2021.08.09