본문 바로가기

API

[통계청 API] 서울 각 구별 초중고 학생 순 이동자수(2006년~2022년)

반응형

통계청 API를 이용해서 서울 각 구별로 초중고 학생의 이동자수를 구해보겠습니다.

확인을 위해서는 통계청 API에 가입이 되어 있어야 합니다.

1. 통계청 API 가입
2. 각 구별 연령별 이동자수 집계

3. 각 구별 학생 이동자수 확인(2022년)

4. 각 구별 학생 순이동 장기데이터(2006년~2022년)

 

 

 

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. 각 구별 연령별 이동자수 집계

서울특별시 시군구 각세별 이동자수(DT_1B26B02)의 데이터를 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=T25+&objL1=11110+11140+11170+11200+11215+11230+11260+11290+11305+11320+' + \
'11350+11380+11410+11440+11470+11500+11530+11545+11560+11590+11620+11650+11680+11710+11740+' + \
'&objL2=52+53+54+55+101+102+103+104+105+151+152+153+154+&objL3=&objL4=&objL5=&objL6=&objL7=&objL8=' + \
'&format=json&jsonVD=Y&prdSe=Y&startPrdDe=' + startPrdDe + \
'&endPrdDe=' + endPrdDe + '&orgId=101&tblId=DT_1B26B02'

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

 

JSON 결과를 DataFrame으로 변환 후 필요한 column만 추리겠습니다.

df=pd.DataFrame(result)
df1=df[['PRD_DE','C1','C1_NM','C2_NM','DT']]
df1

 

C2_NM데이터를 초,중,고 나이로 집계를 위해 데이터 및 타입을 변경합니다.

DT가 실제 이동자수 인데 데이터 타입을 int로 변경합니다.

df1['C2_NM']=df1['C2_NM'].str.replace('세','')
df1=df1.astype({'DT':'int'}).astype({'C2_NM':'int'})

 

초,중,고를 구분할 수 있는 column을 생성합니다.

만 나이로 제공이 되는데 초등학생(7~12), 중학생(13~15), 고등학생(16~18)으로 설정하겠습니다.

df1.loc[(df1['C2_NM']>=7) & (df1['C2_NM']<=12),'ST']='초등학생'
df1.loc[(df1['C2_NM']>=13) & (df1['C2_NM']<=15),'ST']='중학생'
df1.loc[(df1['C2_NM']>=16) & (df1['C2_NM']<=18),'ST']='고등학생'
df1

 

반응형

 

3. 각 구별 학생 이동자수 확인(2022년)

2022년 조건으로 설정하고, 년도/구/학생구분으로 group합니다.

df2=df1.loc[df1['PRD_DE']=='2022'].groupby(['PRD_DE','C1_NM','ST']).sum().reset_index()
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['ST']=='초등학생'].sort_values('DT',ascending=False), x='C1_NM', 
           y='DT', color='C1_NM')
fig.update_layout(
    title_text='2022년 서울시 각 구별 초등학생 순이동수',
    title={'x':0.5}
)
fig.show()

강남, 송파, 양천, 서초 등의 순이동수가 높은 것을 알 수 있습니다.

 

중학생, 고등학생도 확인해 보겠습니다.

 

반응형

 

 

4. 각 구별 학생 순이동 장기데이터(2006년~2022년)

우선 초등학생 순이동 장기데이터 확인하겠습니다.

fig=px.bar(data_frame=df3.loc[df3['ST']=='초등학생'], 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()

강남구와 양천구는  계속 순이동이 높고, 송파구는 2008년이, 강동구는 최근 몇 년이 높습니다.

중학생과 고등학생도 보겠습니다.

 

 

 

이상으로 서울 각 구별로 초중고 학생의 이동자수를 확인해 봤습니다.

반응형