FinanceDataReader에 의한 금융자료 호출
파이썬 라이브러리인 FinanceDataReader를 사용하여 웹을 통해 다양한 금융데이터를 호출하여 사용할 수 있으며 이 데이터의 기본 구조는 pandas.DataFrame 구조로서 pandas의 여러 메소드나 함수를 적용하여 데이터를 조정할 수 있습니다.
FinanceDataReader 라이브러리를 사용하여 국내외 다양한 자료를 입수할 수 있습니다.
이 모듈은 두개의 함수를 가지고 있습니다.
- StockListing(market):
- market에 포함된 종목의 코드, 이름, 개요 등을 호출
- RX : KRX 종목 전체
- OSPI : KOSPI 종목
- OSDAQ : KOSDAQ 종목
- ONEX : KONEX 종목
- ASDAQ : 나스닥 종목
- NYSE : 뉴욕증권거래소 종목
- P500 : S&P500 종목
- DataReader(symbol, start=None, end=None, country=None)
- 코드(symbol)에 대응하는 가격 데이터를 호출
- 시작 날짜만 입력하면 현재까지의 자료를 호출
import numpy as np import pandas as pd import FinanceDataReader as fdr import matplotlib.pyplot as plt
df_krx=fdr.StockListing('KRX')
df_krx.head(2)
| Code | ISU_CD | Name | … | |
|---|---|---|---|---|
| 0 | 005930 | KR7005930003 | 삼성전자 | … |
| 1 | 000660 | KR7000660001 | SK하이닉스 | … |
fdr.StockListing('KOSPI').iloc[:,[0, 2]]
| Code | Name | |
|---|---|---|
| 0 | 005930 | 삼성전자 |
| 1 | 000660 | SK하이닉스 |
| 2 | 373220 | LG에너지솔루션 |
| 3 | 207940 | 삼성바이오로직스 |
| 4 | 005380 | 현대차 |
| ... | ... | ... |
| 953 | 014915 | 성문전자우 |
| 954 | 004415 | 서울식품우 |
| 955 | 001525 | 동양우 |
| 956 | 001527 | 동양2우B |
| 957 | 002995 | 금호건설우 |
개별 주가 데이터
sd=pd.Timestamp(2024,8, 23)
d=fdr.DataReader("005930", sd)
d
| Open | High | Low | Close | Volume | Change | |
|---|---|---|---|---|---|---|
| Date | ||||||
| 2024-08-23 | 77700 | 78400 | 77500 | 77700 | 9420306 | -0.007663 |
| 2024-08-26 | 78100 | 78200 | 76100 | 76300 | 10554181 | -0.018018 |
ed=pd.Timestamp(2024,8, 22)
d1=fdr.DataReader("000660", sd, ed)
d1
| Open | High | Low | Close | Volume | Change | |
|---|---|---|---|---|---|---|
| Date | ||||||
| 2024-08-20 | 198700 | 202500 | 198100 | 199700 | 4258190 | 0.029912 |
| 2024-08-21 | 193000 | 195400 | 191100 | 192600 | 4508983 | -0.035553 |
| 2024-08-22 | 192000 | 194400 | 189000 | 191100 | 3166217 | -0.007788 |
한국과 미국 등 외국의 주요지수는 다음 코드(심볼)로 호출합니다.
| 심볼(한국) | 설명 | 심볼(미국) | 설명 | |
|---|---|---|---|---|
| KS11 | KOSPI 지수 | DJI | 다우지수 | |
| KQ11 | KOSDAQ 지수 | IXIC | 나스닥지수 | |
| KS50 | KOSPI50지수 | US500 | S&P500 지수 | |
| KS100 | KOSPI100 지수 | VIX | VIX | |
| KRX100 | KRX100 | ^sox | 필라델피아반도체 지수 | |
| KS200 | KOSPI200 지수 |
sd=pd.Timestamp(2024,8, 20)
ed=pd.Timestamp(2024,8, 22)
d1=fdr.DataReader("^sox", sd, ed)
d1
| Open | High | Low | Close | Adj Close | Volume | |
|---|---|---|---|---|---|---|
| Date | ||||||
| 2024-08-20 | 5237.290039 | 5273.270020 | 5159.100098 | 5196.299805 | 5196.299805 | 0 |
| 2024-08-21 | 5232.299805 | 5288.540039 | 5205.089844 | 5267.930176 | 5267.930176 | 0 |
환율 데이터
| 심볼 | 설명 |
|---|---|
| USD/KRW | 달러당 원화 |
| USD/EUR | 달러당 유로화 |
| USD/JPY | 달러당 엔화 |
| CNY/KRW | 위엔화 원화 |
| EUR/USD | 유로화 달러 |
| USD/JPY | 달러 엔화 |
| JPY/KRW | 엔화 원화 |
| AUD/USD | 오스트레일리아 달러 |
| EUR/JPY | 유로화 엔화 |
| USD/RUB | 달러 루블화 |
ex=fdr.DataReader("USD/KRW", sd, ed)
ex
| Open | High | Low | Close | Adj Close | Volume | |
|---|---|---|---|---|---|---|
| Date | ||||||
| 2024-08-20 | 1330.880005 | 1335.619995 | 1313.410034 | 1330.880005 | 1330.880005 | 0 |
| 2024-08-21 | 1327.579956 | 1339.640015 | 1324.400024 | 1327.579956 | 1327.579956 | 0 |
호출한 데이터는 DataFrame으로 다음의 인덱스와 컬럼을 가집니다.
type(ex)
pandas.core.frame.DataFrame
ex.index
DatetimeIndex(['2024-08-20', '2024-08-21'], dtype='datetime64[ns]', name='Date', freq=None)
ex.columns
Index(['Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume'], dtype='object')
호출한 데이터의 인덱스는 datetime64형으로 시간을 나타내는 pandas의 자료형입니다. 즉, 호출한 데이터는 시간에 따라 정돈된 시계열(time series)입니다. 이러한 시계열 인덱스는 pandas의 함수 또는 메서드를 사용하여 생성하고 조정할 수 있습니다.
댓글
댓글 쓰기