본문 바로가기

API

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

반응형

한국은행 API를 이용해서 주요 국가들의 생산자 물가를 비교하고

2020년 이후 연간 상승률 및 2022년 4월의 생산자 물가를 확인해 보겠습니다.

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

 

 

1. 한국은행 API 가입

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

3. 소비자 물가(연간) 상승률 및 2022년 4월 물가

 

 

 

1. 한국은행 API 가입

https://yenpa.tistory.com/80

 

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

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

yenpa.tistory.com

 

 

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를 이용해서 주요 국가들의 생산자 물가를 확인해 봤습니다.

반응형