728x90
반응형
이번 시간에는 공공데이터 API를 통해 국민연금 수급 현황에 대해 분석해보고자 한다. 어떤 걸 처음으로 분석할까 고민하다가 첫 시간이다 보니 조금 간단한 내용으로 시작해보겠다. 시도 별로 국민연금 수급 현황을 한 번 API를 뽑아보고 시도 간의 현황이 어떤지 비교해보겠다. 주관적인 생각이지만 보통 60세부터 국민연금을 받기 시작함으로 이번 글에서 뽑고자 하는 결과물은 나이 기준 60세에 시도 별로 국민연금 수급 현황이 어떻게 다른지 한번 분석해보고자 한다.
이번 API에서 요청할 때 시도 코드, 국민연금 수급 연령, 국민연금 종류만 선택해서 뽑도록 하겠다.
1. API KEY 신청
공공데이터 사이트에 "국민연금 수급현황" 를 검색하고 활용 신청하면 모든 준비가 끝났다.
2. Python Code
다음 내용은 코드다. 크게 어려울 것이 없다. 사용하는 함수도 굉장히 쉽고, 파이썬 코드 자체도 복잡하지가 않다. 큰 설명 없이 다 이해할 수 있을 것으로 보인다.
- 우선 필요한 패키지를 임포트하고 API KEY 값과 요청 URL과 합쳐야 된다.
from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import requests
import pandas as pd
import xmltodict
import json
key='~API KEY~'
url = f'http://apis.data.go.kr/B552015/NpsReciptInfoProvdService/getReciptSttusInfoSearch?serviceKey={key}&'
- 대한민국 시도 코드는 구글에 검색해보면 바로 나온다.(필요하다면 동, 읍 기준으로도 뽑을 수 있다.)
code={
'서울시':'11',
'부산':'26',
'대구':'27',
'인천':'28',
'광주':'29',
'대전':'30',
'울산':'31',
'세종':'36',
'경기도':'41',
'강원도':'42',
'충청북도':'43',
'충청남도':'44',
'전라북도':'45',
'전라남도':'46',
'경상북도':'47',
'경상남도':'48',
'제주도':'50'
}
- 전구 시도 별로 반복문을 통해서 데이터를 뽑고 데이터프레임화 만들어 보겠다.
df=dict()
for key, value in code.items():
queryParams = urlencode({ quote_plus('ldong_addr_mgpl_dg_cd') : value, quote_plus('crtr_age') : '60', quote_plus('pay_clss_cd') : '10' })
url2 = url + queryParams
response = urlopen(url2)
results = response.read().decode("utf-8")
results_to_json = xmltodict.parse(results)
data = json.loads(json.dumps(results_to_json))
df[key]=data['response']['body']['item']
addr_df=pd.DataFrame.from_dict(df,orient='index')
addr_df.columns=['평균연금수급액(월)','평균수급기간','평균누적연금수급액','총인원수','평균납부액대비수급액기준']
최종 결과물은 아래와 같이 확인할 수 있다.
- 평균연금수금액과 평균 수급기간 Bar와 line 콤보 차트로 시각화해보겠다.
import seaborn as sns
#Create combo chart
fig, ax1 = plt.subplots(figsize=(10,6))
color = 'tab:green'
#bar plot creation
ax1.set_xlabel('지역', fontsize=16)
ax1.set_ylabel('평균연금수급액(월)', fontsize=16)
ax1 = sns.barplot(x=addr_df.index, y='평균연금수급액(월)', data = addr_df, palette='summer')
ax1.tick_params(axis='y')
#specify we want to share the same x-axis
ax2 = ax1.twinx()
color = 'tab:red'
# #line plot creation
ax2.set_ylabel('평균수급기간', fontsize=16,)
ax2 = sns.lineplot(x=addr_df.index, y='평균수급기간', data = addr_df, sort=False, color=color)
ax2.tick_params(axis='y', color=color)
ax2.set(ylim=(0, 20))
#show plot
plt.show()
결과물:
3. 결론
60세 기준으로 국민연금 수급 현황을 시도 구분 별로 비교해보자면 울산이 평균 수급 기간이 가장 짧은 반면 받는 평균 수급금액은 가장 높았다. 서울은 울산 다음으로 수급액이 높게 나타났고, 내가 살고 있는 인천은 역시 높지 않았다...
다음에 다시 국민연금 갖고 분석하는 내용을 갖고 분석해보겠다.
728x90
반응형
'문송충의 코딩하기 > 파이썬 데이터 분석' 카테고리의 다른 글
파이썬으로 국내 성, 연령별 코로나 확진자 수 크롤링 (0) | 2020.07.27 |
---|---|
네이버 증권 페이지에서 현대차 주요 투자 지표 가져오는 법 With Python (1) | 2020.07.25 |
Dart 전자공시시스템 API를 통해 현대자동차 Data 가져오기 With Python #2 - 재무상태표 (1) | 2020.07.20 |
Dart 전자공시시스템 API를 통해 현대자동차 재무 Data 가져오기 With Python #1 - 손익계산서 (1) | 2020.07.16 |
공공데이터 Open API를 통해 삼성전자 주주 구성 분석하기 With Python (0) | 2020.07.15 |
댓글