한국은행 API를 이용해서 주요 국가들의 생산자 물가를 비교하고
2020년 이후 연간 상승률 및 2022년 4월의 생산자 물가를 확인해 보겠습니다.
확인을 위해서는 한국은행 API에 가입이 되어 있어야 합니다.
1. 한국은행 API 가입
2. 주요국 소비자 물가 확인
3. 소비자 물가(연간) 상승률 및 2022년 4월 물가
1. 한국은행 API 가입
2. 주요국 생산자 물가 확인
주요 국가의 정책 금리는 STAT_CODE=902Y007(9.1.2.1. 국제 주요국 생산자물가지수)에서 확인이 가능합니다.
그럼 데이터를 불러오겠습니다.
import requests
url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey \
+ '/json/kr/1/100/902Y007/M/201001/202212'
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 + '/902Y007/M/201001/202212'
response = requests.get(url)
result = response.json()
rows = rows + result['StatisticSearch']['row']
df=pd.DataFrame(rows)
df
2010년 1월부터의 데이터가 4000개가 넘는데, API로 한 번에 불러올 수 있는 개수는 100개입니다.
그래서 for문을 이용해서 100개 단위로 데이터를 불러와서 rows 리스트에 저장했습니다.
rows 리스트를 DataFrame으로 변환했습니다.
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 + '/902Y007/M/201001/202212'
response = requests.get(url)
result = response.json()
rows = rows + result['StatisticSearch']['row']
df=pd.DataFrame(rows)
df
그럼 어떤 국가들이 포함되어 있는지 보겠습니다.
총 33개의 국가들의 데이터를 제공하고 있습니다.
df['ITEM_NAME1'].unique()
그래프로 확인해 보겠습니다.
TIME column은 YYYYMM 형태의 날짜로 되어 있는데,
datetime 형식으로 column을 생성했습니다.
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import plotly.express as px
df=df.astype({'DATA_VALUE':'float'})
df['datetime']=pd.to_datetime(df['TIME'].str[:4] + '-' + df['TIME'].str[4:6] + '-01')
fig=px.line(data_frame=df, x='datetime', y='DATA_VALUE',
color='ITEM_NAME1',
labels={'ITEM_NAME1':'국가','DATA_VALUE':'물가','TIME':'날짜'})
fig.update_layout(
title_text='주요국가의 생산자물가',
title={'x':0.5}
)
fig.show()
2010년 이후에 터키, 남아공, 멕시코의 생산자 물가가 높은 것을 알 수 있습니다.
3. 소비자 물가(연간) 상승률 및 2022년 10월 물가
연간 상승률을 구하기 위해서는 이전 연도 동일월의 데이터가 하나의 행에서 확인이 되어야 합니다.
datetime, 올해 물가, 작년물가 이런 식이 되어야겠죠.
아래와 같이 nextyear를 구한 다음 df1을 2개로 나누어서 다시 합쳤습니다.
df1=df[['ITEM_NAME1','datetime','DATA_VALUE']]
df1['nextyear']=df1['datetime'] + pd.DateOffset(years=1)
df2=pd.merge(left=df1[['ITEM_NAME1','datetime','DATA_VALUE']],
right=df1[['ITEM_NAME1','nextyear','DATA_VALUE']], how='left',
left_on=['datetime','ITEM_NAME1'], right_on=['nextyear','ITEM_NAME1'])
df2
column명을 수정 후 필요한 column만 따로 저장하겠습니다.
df2=df2[['ITEM_NAME1','datetime','DATA_VALUE_x','DATA_VALUE_y']]
df2.columns=['국가','datetime','물가','이전년물가']
df2
자 연간 상승률을 구해보겠습니다.
df2['상승률']=(df2['물가']/df2['이전년물가']-1)*100
df2
2020년 1월 1일 이후로 데이터를 축소한 후에 그래프로 확인해 보겠습니다.
df3=df2.loc[df2['datetime']>='2020-01-01']
fig=px.line(data_frame=df3, x='datetime', y='상승률',
color='국가')
fig.update_layout(
title_text='2020년 이후 주요국가의 생산자물가(연간상승률)',
title={'x':0.5}
)
fig.show()
노르웨이의 물가가 높았던 것을 알 수 있습니다.
그럼 다음으로는 2022년 4월 1일의 국가별 생산자 물가를 비교해 보겠습니다.
df4=df2.loc[df2['datetime']=='2022-04-01'].sort_values('상승률')
fig=px.bar(data_frame=df4, x='국가', y='상승률',
color='국가')
fig.update_layout(
title_text='2022년 4월 주요국가의 생산자물가(연간상승률)',
title={'x':0.5}
)
fig.show()
한국은행 API를 이용해서 주요 국가들의 생산자 물가를 확인해 봤습니다.
'API' 카테고리의 다른 글
[Fred API] 하이일드 채권 스프레드와 주가(S&P500, KOSPI) 비교 (4) | 2022.12.29 |
---|---|
[한국은행 API] 외환보유액과 원달러 환율 비교 (4) | 2022.12.26 |
[한국은행 API] 주요 국가의 소비자 물가 비교 (5) | 2022.12.22 |
[한국은행 API] 한국 장단기 국채 수익률 곡선 그래프(1년, 3년, 5년, 10년, 20년) (4) | 2022.12.17 |
[fred 한국은행 API] 한국과 미국의 M1(협의통화), M2(광의통화) 비교 (4) | 2022.12.15 |