본문 바로가기

API

[통계청 API] 시군구별 인구이동 통계(2006년~2022년)

반응형

통계청 API를 이용해서 시군구별 인구이동 통계데이터를 불러와보겠습니다.
확인을 위해서는 통계청 API에 가입이 되어 있어야 합니다.

1. 통계청 API 가입
2. 시군구별 인구이동 통계데이터 수집(2006~2022)

3. 시도별 순이동 변동률 및 순이동 장기데이터

 

 

1. 통계청 API 가입

https://yenpa.tistory.com/121

 

[통계청 API] 가입 후 API key 신청 및 확인

통계청 API를 이용하기 위해 사이트 가입 및 API key 신청 후 확인해 보겠습니다. 1. 사이트가입 2. API key 신청 및 확인 1. 사이트 가입 통계청 사이트에 접속합니다. https://kosis.kr/openapi/index/index.jsp KOS

yenpa.tistory.com

 

 

2. 시군구별 인구이동 통계데이터 수집(2006~2022)

국내인구이동통계 -> 시군구별 이동자수(DT_1B26001_A01)의 데이터를 2006년부터 2022년까지 주기를 년으로 해서 수집하겠습니다.

apikey는 본인의 데이터가 필요합니다.

import requests
import pandas as pd

startPrdDe='2006';
endPrdDe='2022';

url='https://kosis.kr/openapi/Param/statisticsParameterData.do?method=getList&apiKey=' + \
apikey + '&itmId=T10+T20+T25+T30+T31+T32+T40+T50+&objL1=ALL&objL2=&objL3=&objL4=&objL5=&objL6=&objL7=&objL8=&' + \
'format=json&jsonVD=Y&prdSe=Y&startPrdDe=' + startPrdDe + \
'&endPrdDe=' + endPrdDe + '&orgId=101&tblId=DT_1B26001_A01'

response = requests.get(url)
result = response.json()
result

 

아래의 개발가이드 -> 통계자료 -> URL 생성에서 조건에 맞는 URL을 생성하는 것이 가능합니다.

 

결과가 JSON 형태로 수집이 되었는데 DataFrame으로 변환하겠습니다.

df=pd.DataFrame(result)
df

 

ITM_NM을 보시면 어떤 항목을 볼수 있을지 알 수 있습니다.

아래의 8가지 항목에 데이터를 확인 할수 있습니다.

df['ITM_NM'].unique()

 

반응형

 

3. 시도별 순이동 변동율 및 순이동 장기데이터

 

 

시도(서울, 경기도, 인천...)와 시군구 데이터가 모두 수집이 됩니다.

우선 시도 데이터만 따로 저장하겠습니다.

level1=['서울특별시','경기도','인천광역시','강원도','충청북도','충청남도','세종특별자치시','대전광역시',
        '전라북도','전라남도','광주광역시','경상북도','대구광역시','경상남도','부산광역시','제주특별자치도']

df1=df.loc[df['C1_NM'].isin(level1),['PRD_DE','ITM_NM','DT','UNIT_NM','C1_NM']]
df1

 

순이동 데이터만 따로 뽑고, 시도별로 연도별 변동률을 구합니다.

df2=df1.loc[df1['ITM_NM']=='순이동'].drop_duplicates()
df2=df2.astype({'DT':'float'})

for level in level1:
    df2.loc[df2['C1_NM']==level,'변동율']=df2.loc[df2['C1_NM']==level,'DT'].pct_change()*100
df2

 

 

2022년 시도별 순이동 변동율을 그래프로 확인해 보겠습니다.

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

fig=px.bar(data_frame=df2.loc[df2['PRD_DE']=='2022'].sort_values('변동율',ascending=False), x='C1_NM', 
           y='변동율', color='C1_NM')
fig.update_layout(
    title_text='2022년 시도별 인구 순이동 변동율',
    title={'x':0.5}
)
fig.show()

인천광역시가 가장 변동률이 높고, 경상북도가 낮게 나왔습니다.

 

 

 

2006년부터 장기데이터로 확인해 보겠습니다.

fig=px.bar(data_frame=df2, x='PRD_DE', 
           y='DT', color='C1_NM', facet_col='C1_NM', facet_col_wrap=4)
fig.update_layout(
    title_text='2006~2022년 시도별 순이동 ',
    title={'x':0.5}
)
fig.show()

서울은 매년 순이동이 마이너스이고, 경기도는 플러스 수치를 나타내고 있습니다.

세종특별자치시도 매년 늘어나는 모습을 보이고 있습니다.

 

 

 

이상으로 시군구별 인구이동 통계데이터를 확인해 봤습니다.

 

반응형