본문 바로가기

API

[한국은행 API] 수출금액지수 수집 및 전년도 동월과 전월 대비 변동 확인

반응형

한국은행 API를 이용해서 수입 금액 지수를 수집하고 전년도 동월 대비 데이터와 전월 대비 변동 데이터를 확인하겠습니다.

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

 

 

1. 한국은행 API 가입

2. 수출 금액 지수 확인

3. 전년도 동월 대비 변동 및 전월 대비 변동(YOY, MON)

 

 

1. 한국은행 API 가입

https://yenpa.tistory.com/80

 

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

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

yenpa.tistory.com

 

 

2. 수출 금액 지수 확인

수출 금액 지수는 STAT_CODE=403Y001 (3.3.1.1.1. 수출금액지수 )에서 확인이 가능합니다.

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

#수출금액지수
import requests

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

 

 

필요한 column만 df1에 다시 저장합니다.

TIME column의 데이터는 YYYYMM의 형태인데 이것을 datetime 형식으로 date column으로 만들었습니다.

df1=df[['ITEM_NAME1','TIME','DATA_VALUE']]
df1['date']=pd.to_datetime((df1['TIME'].str[:4] + '-' + df1['TIME'].str[4:6] + '-01'))
df1=df1.astype({'DATA_VALUE':'float'})
df1=df1.drop_duplicates()
df1

 

 

반응형

 

 

 

3. 전년도 동월 대비 변동 및 전월 대비 변동(YOY, MON)

 

ITEM_NAME1에 종류만 234개가 확인이 됩니다.

len(df['ITEM_NAME1'].unique())

 

각 분류 별로 전년도 동월 대비 변동율(YOY), 전월 대비 변동률 (MOM)을 구하겠습니다.

전체 ITEM_NAME1 리스트를 items에 저장하고

각 item 별로 YOY, MOM을 pct_change를 이용해서 계산했습니다.

items=df['ITEM_NAME1'].unique()

for item in items:
    dftemp=df1.loc[df1['ITEM_NAME1']==item]
    df1.loc[df1['ITEM_NAME1']==item,'YOY']= \
        df1.loc[df1['ITEM_NAME1']==item,'DATA_VALUE'].pct_change(12) *100
    df1.loc[df1['ITEM_NAME1']== \
        item,'MOM']=df1.loc[df1['ITEM_NAME1']==item,'DATA_VALUE'].pct_change() *100

2022년 11월 데이터만 따로 저장하고 YOY로 sort하니,

상위와 하위 분류들의 데이터를 알 수 있습니다.

df202211=df1.loc[df1['date']=='2022-11-01']
df202211.sort_values('YOY',ascending=False)

다음으로는 전월 대비 변동률(MOM)입니다.

df202211.sort_values('MOM',ascending=False)

 

 

반응형

 

 

분류가 200개가 넘으니 한 번에 확인은 힘들 것 같아,

상위 20, 하위 20만 따로 그래프로 확인하겠습니다.

우선 상위 20입니다.

import plotly.express as px
from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig=px.bar(data_frame=df202211.sort_values('YOY',ascending=False).iloc[:20],x='YOY',y='ITEM_NAME1')

fig.update_layout(title_text='2022년 11월 수출금액지수 YOY 상위 20', title_x=0.5)
fig.show()

하위 20입니다.

fig=px.bar(data_frame=df202211.sort_values('YOY',ascending=True).iloc[:20],x='YOY',y='ITEM_NAME1')

fig.update_layout(title_text='2022년 11월 수출금액지수 YOY 하위 20', title_x=0.5)
fig.show()

 

YOY 상위 5개만 2021년 1월부터의 트렌드를 확인하겠습니다.

top20items=['조강','변압기','기초무기화합물','산업용보일러및증기발생기','기초무기화학물질']
dftop20=df1.loc[df1['ITEM_NAME1'].isin(top20items)]

fig=px.line(data_frame=dftop20.loc[dftop20['date']>='2021-01-01'], \
                                   x='date',y='DATA_VALUE',color='ITEM_NAME1')

fig.update_layout(title_text='2021년 ~ 2022년 수입금액지수(YOY 상위 5)', title_x=0.5)
fig.show()

 

이상으로 수출 금액 지수를 수집하고 전년도 동월 대비 데이터와 전월 대비 변동 데이터를 확인해 봤습니다.

 

반응형