한국은행 API를 이용해서 우리나라 국가별로 수출액 데이터를 가져와서 비교해 보겠습니다.
확인을 위해서는 한국은행 API에 가입이 되어 있어야 합니다.
1. 한국은행 API 가입
2. 국가별 수출 총액
3. 2010년 1월과 2022년 12월 데이터 비교
4. 2021년 12월과 2022년 12월의 수출액 비교
5. 수출액 상위 4개국 장기데이터
1. 한국은행 API 가입
2. 국가별 수출 총액 및 과거 데이터 비교
한국은행 API의 통계조회 조건 설정의 서비스에서 통계항목코드 1을 '901Y011'로
지정하면 국가별 수출에 대한 정보를 불러올 수 있습니다.
아래는 수출에 대한 정보(901Y011)를 201001~202212 기간에서 일별로 조회한 코드입니다.
import requests
url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey \
+ '/json/kr/1/100/901Y011/M/201001/202302'
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 + '/901Y011/M/201001/202302'
response = requests.get(url)
result = response.json()
rows = rows + result['StatisticSearch']['row']
df=pd.DataFrame(rows)
df
호출 URL이고 한 번에 최대 100개까지의 데이터만 불러올 수 있습니다.
100개가 넘을 경우에는 100개씩 나누어서 데이터를 수집해야 되는데,
총데이터의 수는 result['StatisticSearch']['list_total_count'] 에서 확인이 가능합니다.
100개씩 몇 번의 for loop를 돌아야 하는지는 list_count에 저장했습니다.
list_total_count=(int)(result['StatisticSearch']['list_total_count'])
list_count=(int)(list_total_count/100) + 1
for문마다 불러온 결과를 rows라는 list에 저장하고 마지막에 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 + '/901Y011/M/201001/202302'
response = requests.get(url)
result = response.json()
rows = rows + result['StatisticSearch']['row']
df=pd.DataFrame(rows)
df
아래 국가들에 수출한 정보가 제공됩니다.
총 25개 국가의 데이터가 있습니다.
countries=df['ITEM_NAME1'].unique()
countries
국가명(ITEM_NAME1)을 보기 좋게 수정하고, DATA_VALUE의 column type을 변경했습니다.
그리고 TIME이 YYYYMM형태로 제공되는데 datetime형태의 column을 생성했습니다.
마지막으로 수출총액 데이터는 제외했습니다.
df['ITEM_NAME1']=df['ITEM_NAME1'].str.replace('수출총액','').str.replace('(','').str.replace(')','')
df=df.astype({'DATA_VALUE':'float'})
df['datetime']=pd.to_datetime(df['TIME'].str[:4] + '-' + df['TIME'].str[4:6] + '-01')
df=df.sort_values('datetime')
df1=df.loc[df['ITEM_NAME1']!='국별수출관세청']
df1=df1.drop_duplicates()
전체 국가에 대한 수출액 정보를 그래프로 확인해 볼까요
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import plotly.express as px
fig=px.line(data_frame=df1, 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()
중국, 미국, 일본, 홍콩이 수출액이 높은 나라입니다.
3. 2010년 1월과 2022년 12월 데이터 비교
2010년 1월 데이터를 확인해 보겠습니다.
fig=px.bar(data_frame=df1.loc[df1['datetime']=='2010-01-01'].sort_values('DATA_VALUE',ascending=False),
x='ITEM_NAME1', y='DATA_VALUE',
labels={'ITEM_NAME1':'국가','DATA_VALUE':'물가','TIME':'날짜'})
fig.update_layout(
title_text='2010년 1월 국가별 수출',
title={'x':0.5}
)
fig.show()
수출액 비율로 보겠습니다.
fig=px.pie(data_frame=df1.loc[df1['datetime']=='2010-01-01'].sort_values('DATA_VALUE',ascending=False),
names='ITEM_NAME1', values='DATA_VALUE',
labels={'ITEM_NAME1':'국가','DATA_VALUE':'물가','TIME':'날짜'})
fig.update_layout(
title_text='2010년 1월 국가별 수출',
title={'x':0.5}
)
fig.show()
중국이 가장 많고, 미국 일본 홍콩 순으로 수출액이 많았습니다.
2022년 12월 데이터를 보겠습니다.
fig=px.pie(data_frame=df1.loc[df1['datetime']=='2022-12-01'].sort_values('DATA_VALUE',ascending=False),
names='ITEM_NAME1', values='DATA_VALUE')
fig.update_layout(
title_text='2022년 12월 국가별 수출',
title={'x':0.5}
)
fig.show()
2010년과 비교해 보면 상위 4개국은 변화가 없지만, 비율이 변동이 된 것을 알 수 있습니다.
4. 2021년 12월과 2022년 12월의 수출액 비교
지난해 동월 대비 변동률을 구합니다.
countries=df1['ITEM_NAME1'].unique()
for country in countries:
df1.loc[df1['ITEM_NAME1']==country,'변동율(YOY)'] = df1.loc[df1['ITEM_NAME1']==country,'DATA_VALUE'].pct_change(12)*100
2022년 12월의 데이터를 그래프로 보겠습니다.
df2=df1.loc[df1['datetime']=='2022-12-01'].sort_values('변동율(YOY)',ascending=False)
fig=px.bar(data_frame=df2.iloc[:10],
x='ITEM_NAME1', y='변동율(YOY)')
fig.update_layout(
title_text='2021년 12월 대비 2022년 12월 국가별 수출 변동율 상위10',
title={'x':0.5}
)
fig.show()
파나마가 2021년 12월 대비 변동률은 가장 높고, 프랑스 스위스 호주 등이 그 뒤를 잇습니다.
변동률을 낮은 순으로 확인해 보겠습니다.
fig=px.bar(data_frame=df2.iloc[-10:],
x='ITEM_NAME1', y='변동율(YOY)')
fig.update_layout(
title_text='2021년 12월 대비 2022년 12월 국가별 수출 변동율 하위10',
title={'x':0.5}
)
fig.show()
5. 수출액 상위 4개국 장기데이터
마지막으로 우리 나라가 수출을 가장 많이 하는 4개 국가의 장기데이터를 확인해 보겠습니다.
df3=df1.loc[df1['ITEM_NAME1'].isin(['중국','미국','일본','홍콩'])]
fig=px.bar(data_frame=df3,
x='datetime', y='DATA_VALUE', facet_col='ITEM_NAME1', facet_col_wrap=2, height=800)
fig.update_layout(
title_text='2010~2022년 수출액 상위 4개국',
title={'x':0.5}
)
fig.show()
이상으로 우리나라 국가별로 수출액 데이터를 가져와서 비교해 봤습니다.
'API' 카테고리의 다른 글
[통계청 API] 시군구별 인구이동 통계(2006년~2022년) (4) | 2023.02.24 |
---|---|
[통계청 API] 가입 후 API key 신청 및 확인 (4) | 2023.02.21 |
[네이버 뷰 크롤링] 검색어에 대한 링크정보 확인 (4) | 2023.02.15 |
[공공데이터포털 API] SRT 운행월별 정차역별 승하차인원 (8) | 2023.02.13 |
[Fred API] 실업률과 비농업고용 및 기준금리 비교 (4) | 2023.02.09 |