from pykrx import stock
import FinanceDataReader as fdr
import pandas as pd
import plotly.express as px
1. KR ETF 리스트 불러오기
2. 특정 단어를 포함한 ETF 추출하기
3. 기간 데이터 불러오기
4. 가격 추이 그래프 그리기
#1 KR ETF 리스트 불러오기
ETF - KR , US , JP : 나라별 ETF 리스트
오늘은 한국 ETF 중 '전기차' 관련 ETF의 가격추이를 그래프로 그려보자.
필요한 기능들을 import 해주고 시작
ETF/KR
from pykrx import stock
import FinanceDataReader as fdr
import pandas as pd
ETF_KR = fdr.StockListing("ETF/KR") # kr의 ETF 리스트 불러오기
533개의 ETF가 나오는데 오늘은 비슷한 장르의 ETF들의 가격추이를 비교하기위해
특정 단어가 들어간 ETF만 추출해서 해볼것이다

#2 특정 단어를 포함한 ETF 추출하기
한참 Hot했던 전기차로 해본다면
[ETF_KR['Name'].str.contains('전기차')]
ETF_elecCar = ETF_KR[ETF_KR['Name'].str.contains('전기차')]
ETF_KR 에서 contains를 이용해 Name칼럼에 '전기차' 가 포함된 것만 ETF_elecCar에 넣었다

2개의 ETF가 나왔다. 두 ETF의 2020년 부터의 데이터를 추출해 그래프를 만들어 보자
#3 ETF 기간데이터 불러오기
elecCar_2020 = pd.DataFrame()
for row_index, values in ETF_elecCar.iterrows(): # row_index 만큼 value 추출
symbol, name = values # 종목코드, 종목명 각 value값 삽입
elec_df = fdr.DataReader(symbol, '2020-01-01') # 기간데이터
elec_df['Name'] = name
elecCar_2020 = pd.concat([ elecCar_2020,elec_df ])
iterrows 로 모든 행에 반복하여 값을 추출한다
symbol(종목코드), name(종목명)에 각각 value를 넣고
elec_df 에는 2020-01-01 부터의 데이터를 symbol(종목코드)별로 가져온다
elec_df 의 Name 칼럼에는 name(종목명)을 넣어준다
맨 아랫줄에서 elecCar_2020에 concat으로 데이터를 붙여준다.
그 이유는 첫번째 symbol로 for문을 다 돌고 나면 두번째 symbol의 데이터가 elec_df의 자리를 차지하기 때문에
데이터가 온전히 보존되지 못하고 row와 column에 덮혀진다.
때문에 elecCar_2020에 먼저 넣어준 후 이전 값 + 새 값 을 하기 위해 concat을 사용
아래는 elecCar_2020 의 중략한 결과. Name별로 나눠져 나왔다.

#4 ETF 가격추이 그래프 그리기
import plotly.express as px
fig = px.line(elecCar_2020, x=elecCar_2020.index, y="Close", color='Name')
fig.update_layout(title='ETF 가격 추이', # 타이틀 옵션
xaxis_title='Date',
yaxis_title='Close')
fig.show()
x = elecCar_2020으로 한다고 해서 막대그래프처럼 뭐 이름이 나오는 건 아니고 적절한 값으로 나눠준다. ( 단위 설정은 따로 해야함)
Name별로 color를 나눠주고 update_layout은 옵션이다.

옵션 사항으로 위쪽 ETF 가격추이, 왼쪽 Close, 아래 Date 가 생겼다
ㅎ끝ㅎ
단계별로 하면 쉬운데 또 내일이면 힘들지 모르겠다 ㅎㅎ
이게 내가 티스토리를 하는 이유이지 않을까
Good!
'Project > 💸금융 빅데이터 투자 서비스 API' 카테고리의 다른 글
| [python] #11 비트코인 bollinger band 구하기 (0) | 2021.12.11 |
|---|---|
| [python] #10 벡테스팅 카카오 단순 누적수익율 구하기 (0) | 2021.12.11 |
| [python] #8 금융업 sector 수익율 구하기 (0) | 2021.12.04 |
| [python] #7 FinanceDataReader + pandas + matplot 예제 (0) | 2021.12.04 |
| [python] #6 FinanceDataReader 주가데이터 오픈소스 (0) | 2021.12.03 |