통계청 API를 이용해서 서울 각 구별로 초중고 학생의 이동자수를 구해보겠습니다.
확인을 위해서는 통계청 API에 가입이 되어 있어야 합니다.
1. 통계청 API 가입
2. 각 구별 연령별 이동자수 집계
3. 각 구별 학생 이동자수 확인(2022년)
4. 각 구별 학생 순이동 장기데이터(2006년~2022년)
1. 통계청 API 가입
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년이, 강동구는 최근 몇 년이 높습니다.
중학생과 고등학생도 보겠습니다.
이상으로 서울 각 구별로 초중고 학생의 이동자수를 확인해 봤습니다.
'API' 카테고리의 다른 글
[통계청 API] 해외 입국자의 국적,연령대,입국 목적별 정보수집(2022년) (4) | 2023.03.06 |
---|---|
[yahoo finance API] 금 은 구리 스프레드와 주가(S&P500) 비교 (4) | 2023.03.02 |
[통계청 API] 시군구별 인구이동 통계(2006년~2022년) (4) | 2023.02.24 |
[통계청 API] 가입 후 API key 신청 및 확인 (4) | 2023.02.21 |
[한국은행 API] 우리나라의 국가별 수출총액 수집 및 과거데이터 비교 (4) | 2023.02.17 |