반응형
한국은행 API를 이용해서 위안/원, 엔/원, 달러/원 환율 데이터를 불러오고 KOSPI 지수와 비교해 보겠습니다.
확인을 위해서는 한국은행 API에 가입이 되어 있어야 합니다.
1. 한국은행 API 가입
2. 위안/원 환율과 KOSPI
3. 엔/원 환율과 KOSPI
4. 달러/원 환율과 KOSPI
1. 한국은행 API 가입
2. 위안/원 환율과 KOSPI
환율에 대한 정보는 STAT_CODE=731Y001(3.1.1.1. 주요국 통화의 대원화환율)에서 확인이 가능합니다.
일단위 데이터를 설정하고 데이터를 전체 수집하면, 300건이 넘어 30분간 수집이 제한이 됩니다.
그래서 달러, 엔, 위안 환율을 각각 불러오겠습니다.
우선 위안/원인데 2016-01-01부터 데이터를 제공합니다.
#위안환율
import requests
url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey \
+ '/json/kr/1/100/731Y001/D/20010101/20221231/0000053'
response = requests.get(url)
result = response.json()
list_total_count=(int)(result['StatisticSearch']['list_total_count'])
list_count=(int)(list_total_count/100) + 1
rows=[]
for i in range(0,list_count):
start = str(i * 100 + 1)
end = str((i + 1) * 100)
url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey + '/json/kr/' \
+ start + '/' + end + '/731Y001/D/20010101/20221231/0000053'
response = requests.get(url)
result = response.json()
rows = rows + result['StatisticSearch']['row']
dfwon=pd.DataFrame(rows)
dfwon
datetime type의 date column을 생성하고, DATA_VALUE column을 float으로 변경하겠습니다.
dfwon['datetime']=pd.to_datetime(dfwon['TIME'].str[:4] + '-' + \
dfwon['TIME'].str[4:6] + '-' + dfwon['TIME'].str[6:8])
dfwon=dfwon.astype({'DATA_VALUE':'float'})
다음으로는 KOSPI 지수를 불러오겠습니다.
kospi는 엔/원 환율과 달러/원 환율 비교 시 사용하고,
kospi1은 위안/원 환율과 비교시 사용하겠습니다.
import yfinance as yf
from datetime import datetime
enddate=datetime.now().strftime('%Y-%m-%d')
kospi=yf.download('^KS11', '2010-01-01', enddate, auto_adjust=True)
kospi1=kospi.loc[kospi.index>='2016-01-01']
kospi1
그래프로 확인해 보겠습니다.
import plotly.graph_objects as go
from plotly.subplots import make_subplots
fig = make_subplots(specs=[[{"secondary_y":True}]])
fig.add_trace(
go.Scatter(x=dfwon['datetime'], y=dfwon['DATA_VALUE'], name="위안/원 환율"),
secondary_y=False,
)
fig.add_trace(
go.Scatter(x=kospi1.index, y=kospi1['Close'], name="KOSPI"),
secondary_y=True,
)
fig.update_layout(
title_text='위안/원 환율과 KOSPI',
title={'x':0.5, 'y':0.9}
)
fig.show()
반응형
3. 엔/원 환율과 KOSPI
다음으로는 엔/원 환율인데 2010-01-01부터 데이터를 수집하고,
datetime 형식의 column을 생성하겠습니다.
#엔화환율
import requests
url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey \
+ '/json/kr/1/100/731Y001/D/20100101/20221231/0000002'
response = requests.get(url)
result = response.json()
list_total_count=(int)(result['StatisticSearch']['list_total_count'])
list_count=(int)(list_total_count/100) + 1
rows=[]
for i in range(0,list_count):
start = str(i * 100 + 1)
end = str((i + 1) * 100)
url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey + '/json/kr/' \
+ start + '/' + end + '/731Y001/D/20100101/20221231/0000002'
response = requests.get(url)
result = response.json()
rows = rows + result['StatisticSearch']['row']
dfwon1=pd.DataFrame(rows)
dfwon1['datetime']=pd.to_datetime(dfwon1['TIME'].str[:4] + '-' + \
dfwon1['TIME'].str[4:6] + '-' + dfwon1['TIME'].str[6:8])
dfwon1=dfwon1.astype({'DATA_VALUE':'float'})
그래프로 확인해 볼까요.
fig = make_subplots(specs=[[{"secondary_y":True}]])
fig.add_trace(
go.Scatter(x=dfwon1['datetime'], y=dfwon1['DATA_VALUE'], name="엔/원 환율"),
secondary_y=False,
)
fig.add_trace(
go.Scatter(x=kospi.index, y=kospi['Close'], name="KOSPI"),
secondary_y=True,
)
fig.update_layout(
title_text='엔/원 환율과 KOSPI',
title={'x':0.5, 'y':0.9}
)
fig.show()
4. 달러/원 환율과 KOSPI
다음으로는 달러/원 환율 데이터를 수집하겠습니다.
#달러환율
import requests
url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey \
+ '/json/kr/1/100/731Y001/D/20100101/20221231/0000001'
response = requests.get(url)
result = response.json()
list_total_count=(int)(result['StatisticSearch']['list_total_count'])
list_count=(int)(list_total_count/100) + 1
rows=[]
for i in range(0,list_count):
start = str(i * 100 + 1)
end = str((i + 1) * 100)
url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey + '/json/kr/' \
+ start + '/' + end + '/731Y001/D/20100101/20221231/0000001'
response = requests.get(url)
result = response.json()
rows = rows + result['StatisticSearch']['row']
dfwon2=pd.DataFrame(rows)
dfwon2['datetime']=pd.to_datetime(dfwon2['TIME'].str[:4] + '-' + \
dfwon2['TIME'].str[4:6] + '-' + dfwon2['TIME'].str[6:8])
dfwon2=dfwon2.astype({'DATA_VALUE':'float'})
그래프로 볼까요
fig = make_subplots(specs=[[{"secondary_y":True}]])
fig.add_trace(
go.Scatter(x=dfwon2['datetime'], y=dfwon2['DATA_VALUE'], name="달러/원 환율"),
secondary_y=False,
)
fig.add_trace(
go.Scatter(x=kospi.index, y=kospi['Close'], name="KOSPI"),
secondary_y=True,
)
fig.update_layout(
title_text='달러/원 환율과 KOSPI',
title={'x':0.5, 'y':0.9}
)
fig.show()
반응형
마지막으로 달러, 엔, 위안 환율 그래프를 확인해 보겠습니다.
dfwon3=dfwon1.loc[dfwon1['datetime']>='2016-01-01']
dfwon4=dfwon2.loc[dfwon1['datetime']>='2016-01-01']
fig = make_subplots(specs=[[{"secondary_y":True}]])
fig.add_trace(
go.Scatter(x=dfwon['datetime'], y=dfwon['DATA_VALUE'], name="위안/원 환율"),
secondary_y=True,
)
fig.add_trace(
go.Scatter(x=dfwon3['datetime'], y=dfwon3['DATA_VALUE'], name="엔/원 환율"),
secondary_y=False,
)
fig.add_trace(
go.Scatter(x=dfwon4['datetime'], y=dfwon4['DATA_VALUE'], name="달러/원 환율"),
secondary_y=False,
)
fig.update_layout(
title_text='달러,엔,위안 환율',
title={'x':0.5, 'y':0.9}
)
fig.show()
이상으로 위안/원, 엔/원, 달러/원 환율 데이터를 불러오고 KOSPI 지수와 비교해 봤습니다.
반응형
'API' 카테고리의 다른 글
[yahoo finance API] 천연가스와 러시아 루블, 달러인덱스 비교 (1223) | 2023.01.21 |
---|---|
[yahoo finance API] Crude oil과 달러인덱스 ,금, S&P500 비교 (1605) | 2023.01.20 |
[한국은행 API] 주요국가 외환보유액과 2022년 변동율 비교 (3433) | 2023.01.16 |
[한국은행 API] 경기심리지수, 뉴스심리지수와 코스피 주가 (2071) | 2023.01.13 |
[한국은행 API] 수출금액지수 수집 및 전년도 동월과 전월 대비 변동 확인 (3422) | 2023.01.11 |