본문 바로가기

API

[한국은행 API] 주요 국가의 소비자 물가 비교

반응형

한국은행 API를 이용해서 주요 국가들의 소비자 물가를 확인해 보겠습니다.

확인을 위해서는 한국은행 API에 가입이 되어 있어야 합니다.

 

 

1. 한국은행 API 가입

2. 주요국 소비자 물가 확인

3. 소비자 물가(연간) 상승률

 

1. 한국은행 API 가입

https://yenpa.tistory.com/80

 

[한국은행 API] 인증키 신청 및 100대 통계 지표 수집

한국은행 API에 가입하고 서비스 항목 중 100대 통계지표에 대해 데이터 수집하고 그래프로 확인해보겠습니다. 1. 인증키 신청 2. 인증키 확인 3. 100대 통계 지표 수집 1. 인증키 신청 사이트 접속

yenpa.tistory.com

 

 

2. 주요국 소비자 물가 확인

주요 국가의 정책 금리는 STAT_CODE=902Y008 (9.1.2.2. 국제 주요국 소비자물가지수)에서 확인이 가능합니다.

그럼 데이터를 불러오겠습니다.

import requests

url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey \
        + '/json/kr/1/100/902Y008/M/202201/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 + '/902Y008/M/202201/202212'
    response = requests.get(url)
    result = response.json()
    rows = rows + result['StatisticSearch']['row']
    
df=pd.DataFrame(rows)
df

 

2010년 1월부터의 데이터가 10000개가 넘는데, 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 + '/902Y008/M/200001/202212'
    response = requests.get(url)
    result = response.json()
    rows = rows + result['StatisticSearch']['row']
    
df=pd.DataFrame(rows)
df

 

한국만 확인해 볼까요. 2010년 1월 ~ 2022년 7월까지 데이터가 확인이 됩니다.

df.loc[df['ITEM_NAME1']=='한국']

 

그럼 어떤 국가들이 포함되어 있는지 보겠습니다.

총 39개의 국가들의 데이터를 제공하고 있습니다.

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'})
fig=px.line(data_frame=df, x='TIME', y='DATA_VALUE', 
            color='ITEM_NAME1', 
           labels={'ITEM_NAME1':'국가','DATA_VALUE':'물가','TIME':'날짜'})
fig.update_layout(
    title_text='주요국가의 소비자물가',
    title={'x':0.5}
)
fig.show()

상승률이 가장 높은 국가는 터키입니다. 

 

 

3. 소비자 물가 연간 상승률

연간 상승률을 구하기 위해서는 이전 연도 동일월의 데이터가 하나의 행에서 확인이 되어야 합니다.

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

 

df3=df2.loc[df2['datetime']>='2020-01-01']


fig=px.line(data_frame=df3, x='datetime', y='상승률', 
            color='국가')
fig.update_layout(
    title_text='주요국가의 소비자물가(연간상승률)',
    title={'x':0.5}
)
fig.show()

역시 터키가 가장 높게 나옵니다.

마지막으로 2022년 10월 기준 주요 국가의 소비자물가 연간 상승률을 확인해 보겠습니다.

df4=df2.loc[df2['datetime']=='2022-10-01'].sort_values('상승률')


fig=px.bar(data_frame=df4, x='국가', y='상승률', 
            color='국가')
fig.update_layout(
    title_text='2020년 10월 주요국가의 소비자물가(연간상승률)',
    title={'x':0.5}
)
fig.show()

 

한국은행 API를 이용해서 주요 국가들의 소비자 물가를 확인해 봤습니다.

 

반응형