통계청 API를 이용해서 해외 입국자의 국적별, 연령대별, 입국 목적별 데이터를 확인해 보겠습니다.
확인을 위해서는 통계청 API에 가입이 되어 있어야 합니다.
1. 통계청 API 가입
2. 국적별 입국 정보
3. 연령대별 입국 정보
4. 입국 목적별 입국 정보
1. 통계청 API 가입
2. 국적별 입국 정보
외래객 입국-연령별/국적별(DT_TRD_AGE_ENT_AGG_MONTH)의 2022년 데이터를 월별 수집하겠습니다.
apikey는 본인의 데이터가 필요합니다.
import requests
import pandas as pd
url='https://kosis.kr/openapi/Param/statisticsParameterData.do?method=getList&' + \
'apiKey=' + apikey + '&itmId=13103314423T02+13103314423T03+13103314423T04+13103314423T05' + \
'+13103314423T06+13103314423T07+&objL1=13102314423A.2002+13102314423A.2003+13102314423A.2004' + \
'+13102314423A.2005+13102314423A.2006+13102314423A.2007+13102314423A.2008+13102314423A.2009' + \
'+13102314423A.2010+13102314423A.2011+13102314423A.2012+13102314423A.2013+13102314423A.2014' + \
'+13102314423A.2015+13102314423A.2016+13102314423A.2017+13102314423A.2018+13102314423A.2019' + \
'+13102314423A.2020+13102314423A.2021+13102314423A.2022+13102314423A.2023+13102314423A.2024' + \
'+13102314423A.2025+13102314423A.3002+13102314423A.3003+13102314423A.3004+13102314423A.3005' + \
'+13102314423A.4002+13102314423A.4003+13102314423A.4004+13102314423A.4005+13102314423A.4006' + \
'+13102314423A.4007+13102314423A.4008+13102314423A.4009+13102314423A.4010+13102314423A.4011' + \
'+13102314423A.4012+13102314423A.4013+13102314423A.4014+13102314423A.4015+13102314423A.4016' + \
'+13102314423A.4017+13102314423A.4018+13102314423A.4019+13102314423A.4020+13102314423A.4021' + \
'+13102314423A.4022+13102314423A.4023+13102314423A.5002+13102314423A.5003+13102314423A.5004' + \
'+13102314423A.6002+13102314423A.6003+&objL2=&objL3=&objL4=&objL5=&objL6=&objL7=&objL8=&format=json' + \
'&jsonVD=Y&prdSe=M&startPrdDe=202201&endPrdDe=202212&orgId=314&tblId=DT_TRD_AGE_ENT_AGG_MONTH'
response = requests.get(url)
result = response.json()
result
Json -> DataFrame으로 변경하고,
필요한 Column만 지정하고, Data Column인 DT를 int 형태로 변경했습니다.
df=pd.DataFrame(result)
df1=df[['PRD_DE','PRD_SE','ITM_NM','C1_NM','DT']]
df1=df1.astype({'DT':'int'})
df1
국가별로 입국자수를 그래프로 확인하겠습니다.
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import plotly.express as px
df2=df1.groupby('C1_NM')[['DT']].sum().sort_values('DT',ascending=False).iloc[:20,]
fig=px.bar(data_frame=df2, x=df2.index,
y='DT', color=df2.index)
fig.update_layout(
title_text='2022년 국가별 입국자수',
title={'x':0.5}
)
fig.show()
미국 국적이 가장 많았고, 그다음으로 일본, 중국, 태국, 싱가포르 순으로 많았습니다.
3. 연령대별 입국 정보
연령대 별로는 어떻게 구성이 되어있는지 보겠습니다.
fig=px.pie(data_frame=df1, names='ITM_NM',
values='DT', color='ITM_NM')
fig.update_layout(
title_text='2022년 연령대별 입국자 비율',
title={'x':0.5}
)
fig.show()
21~30세가 가장 많았고, 31~40, 41~50세 순으로 많았습니다.
그럼 연령대별로 국적 구성을 확인해 보겠습니다.
우선 입국자 상위 10개 국가만 따로 저장을 하겠습니다.
country=df2.index.unique()[:10]
df3=df1.groupby(['ITM_NM','C1_NM'])[['DT']].sum().reset_index().sort_values('DT',ascending=False)
df3=df3.loc[df3['C1_NM'].isin(country)]
country
그래프로 확인하겠습니다.
fig=px.pie(data_frame=df3, names='C1_NM',
values='DT', facet_col='ITM_NM', facet_col_wrap=3, height=700)
fig.update_layout(
title_text='2022년 연령대별 국적별 입국자 비율',
title={'x':0.5}
)
fig.show()
전체 입국은 미국> 일본> 중국> 태국> 싱가포르 순이었습니다.
21~30세는 일본이 가장 많았고, 61세 이상은 미국이 절반정도 차지했습니다.
30~40세는 태국이 2번째로 많았고, 0~20세는 싱가포르가 2번째로 확인이 됩니다.
4. 입국 목적별 입국 정보
입국 목적별 입국 정보를 수집하고 그래프로 확인하겠습니다.
url='https://kosis.kr/openapi/Param/statisticsParameterData.do?method=getList&' + \
'apiKey=' + apikey + '&itmId=13103314422T02+13103314422T03+13103314422T04+13103314422T05+13103314422T06+&objL1=13102314422A.2002+13102314422A.2003+13102314422A.2004+13102314422A.2005+13102314422A.2006+13102314422A.2007+13102314422A.2008+13102314422A.2009+13102314422A.2010+13102314422A.2011+13102314422A.2012+13102314422A.2013+13102314422A.2014+13102314422A.2015+13102314422A.2016+13102314422A.2017+13102314422A.2018+13102314422A.2019+13102314422A.2020+13102314422A.2021+13102314422A.2022+13102314422A.2023+13102314422A.2024+13102314422A.2025+13102314422A.3002+13102314422A.3003+13102314422A.3004+13102314422A.3005+13102314422A.4002+13102314422A.4003+13102314422A.4004+13102314422A.4005+13102314422A.4006+13102314422A.4007+13102314422A.4008+13102314422A.4009+13102314422A.4010+13102314422A.4011+13102314422A.4012+13102314422A.4013+13102314422A.4014+13102314422A.4015+13102314422A.4016+13102314422A.4017+13102314422A.4018+13102314422A.4019+13102314422A.4020+13102314422A.4021+13102314422A.4022+13102314422A.4023+13102314422A.5002+13102314422A.5003+13102314422A.6002+&objL2=&objL3=&objL4=&objL5=&objL6=&objL7=&objL8=&format=json&jsonVD=Y&prdSe=M&startPrdDe=202201&endPrdDe=202212&orgId=314&tblId=DT_TRD_TGT_ENT_AGG_MONTH'
response = requests.get(url)
result = response.json()
df=pd.DataFrame(result)
df1=df[['PRD_DE','PRD_SE','ITM_NM','C1_NM','DT']]
df1=df1.astype({'DT':'int'})
fig=px.pie(data_frame=df1, names='ITM_NM',
values='DT', color='ITM_NM')
fig.update_layout(
title_text='2022년 입국목적별 입국자 비율',
title={'x':0.5}
)
fig.show()
마지막으로 국적별로 입국 목적비율을 확인하겠습니다.
df3=df1.groupby(['ITM_NM','C1_NM'])[['DT']].sum().reset_index().sort_values('DT',ascending=False)
df3=df3.loc[df3['C1_NM'].isin(country)]
fig=px.pie(data_frame=df3, names='ITM_NM',
values='DT', facet_col='C1_NM', facet_col_wrap=4, height=700)
fig.update_layout(
title_text='2022년 국적별 입국목적별 입국자 비율',
title={'x':0.5}
)
fig.show()
전체 입국목적은 관광> 기타> 유학연수 순이었습니다.
전체적으로 관광의 비율이 높지만, 중국 및 필리핀은 기타 목적이 많은 것을 알 수 있습니다.
한국 관광공사의 자료에 설명되어 있는 입국목적별의 기준은 아래와 같습니다.
이상으로 해외 입국자의 국적별, 연령대별, 입국 목적별 데이터를 확인해 봤습니다.
'API' 카테고리의 다른 글
[Fred API] 미국 기준금리와 국채 수익률 스프레드 (8) | 2023.03.19 |
---|---|
[한국은행 API] 한국 기준금리와 국채 수익률 스프레드 (4) | 2023.03.16 |
[yahoo finance API] 금 은 구리 스프레드와 주가(S&P500) 비교 (4) | 2023.03.02 |
[통계청 API] 서울 각 구별 초중고 학생 순 이동자수(2006년~2022년) (4) | 2023.02.28 |
[통계청 API] 시군구별 인구이동 통계(2006년~2022년) (4) | 2023.02.24 |