-
국민 임대 주택 총 세대 수 현황 알아보자 with 공공데이터 & 파이썬Data Analysis/Real Estate 2021. 4. 8. 16:04
요즘 LH 사건 때문에 온 나라가 뒤숭숭하다. 그래서 이번 포스팅에서는 아래 공공데이터에서 제공하고 있는 임대주택 단지 API를 활용해서 국내 임대 주택에 대해 분석해보는 시간을 갖도록 하겠다.
data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15059475
공공데이터 포털
국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase
www.data.go.kr
1. 데이터 가져오기
아래 코드가 문제없이 돌아간다면 전국 기준 국민 임대 주택 현황을 확인할 수 있을 것이다.
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 from datetime import datetime as dt import requests key='~~' data=[] for code in sido['code']: url=f'http://apis.data.go.kr/B552555/lhLeaseInfo/lhLeaseInfo?serviceKey={key}&' queryParams =urlencode({quote_plus('PAGE') : '1',quote_plus('PG_SZ') : '9999', quote_plus('CNP_CD') : code, quote_plus('SPL_TP_CD') : '07', }) url2=url+queryParams res=requests.get(url2).json() data.extend(res[1]['dsList']) import pandas as pd import requests from bs4 import BeautifulSoup as bs link='https://inasie.github.io/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/5/' gu=pd.read_html(link,encoding='utf-8')[0] gu['법정동코드']=gu['법정동코드'].astype(str) sido=gu[(gu['법정동코드'].str.contains('000')) | (gu['법정동주소']=='세종특별자치시') ] sido['code']=sido['법정동코드'].apply(lambda x:x[:2]) df=pd.DataFrame(data) df2=df.drop_duplicates('SBD_LGO_NM',keep='first') df2['시도']=df2['ARA_NM'].apply(lambda x:x.split(' ')[0]) df2['SUM_HSH_CNT']=df2['SUM_HSH_CNT'].astype(int)
2. 전국 시도별 국민 임대 주택 총 세대수 확인
위에서 추출한 데이터에는 주소 정보도 포함되어 있기 때문에 시도별로 임대 주택 세대수를 알아보도록 하겠다. 아래 그래프를 보면 경기도에서 국민 임대 주택 세대수가 가장 많은 점을 확인할 수 있다.
import matplotlib.pyplot as plt total=pd.DataFrame(df2.groupby(['시도']).sum()['SUM_HSH_CNT']) total=total.reset_index() total.columns=['시도','국민 임대 총 세대 수'] plt.rcParams['figure.dpi'] = 1000 plt.rcParams["font.family"] = 'Malgun Gothic' fig, ax = plt.subplots(1,1, figsize=(18, 9)) ax.bar(total['시도'], total['총 세대 수'],width=0.55, edgecolor='darkgray', color='#d4dddd', linewidth=0.7) for i in total.index: ax.annotate(f"{total['총 세대 수'][i]}", xy=(i, total['총 세대 수'][i]+100), va = 'center', ha='center',fontweight='light', fontfamily='serif', color='#4a4a4a') for s in ['top', 'left', 'right']: ax.spines[s].set_visible(False) plt.xticks(rotation=45,fontsize=13) fig.text(0.1, 0.95, '시도별 국민임대 주택 총 세대수', fontsize=15, fontweight='bold', fontfamily='Malgun Gothic') ax.grid(axis='y', linestyle='-', alpha=0.4)
3. 시도별 국민 임대 주택 세대 수 비중
단순히 위 그래프 처럼 절대 수치로 비교하면 큰 의미가 없는 것 같아서 시도별 총 세대수에서 국민 임대 주택 세대 비중이 어느 정도 인지 알아보도록 하겠다.
충청북도, 경기도, 광주광역시에서 임대 주택 세대 비중이 가장 높은 점을 볼 수 있다. 반면 역시나 서울은 전국에서 국민 임대 주택 비중이 가장 낮게 나타났다.
popu=pd.read_csv('C:/Users/banad/Downloads/인구수 (2).csv',encoding='cp949') popu.columns=['시도','등록 세대 수'] total2=pd.merge(left=total,right=popu,how='inner',left_on=total['시도'],right_on=popu['시도']) total2['국민임대 비중']=total2['국민 임대 총 세대 수']/total2['등록 세대 수'] total2['국민임대 비중']=total2['국민임대 비중'].apply(lambda x: x*100) total2['국민임대 비중']=total2['국민임대 비중'].round(decimals=2) total2=total2.sort_values(by='국민임대 비중',ascending=False) plt.rcParams['figure.figsize'] = (20, 12) plt.rcParams["font.family"] = 'Malgun Gothic' plt.bar(total2['시도_x'],total2['국민임대 비중'],width=0.6, align='edge', color="springgreen", edgecolor="gray", linewidth=3) plt.xticks(rotation=45,fontsize=13) plt.ylabel('국민임대 주택 세대 비중', fontsize = 18) plt.xlabel('시도', fontsize = 18) plt.title('시도별 국민임대 주택 세대 비중',pad=20,fontsize=20) for i in range(len(total2)): y=total2['국민임대 비중'].values[i] plt.text(i,y,f'{y}%',fontsize=14,color='red') plt.show()
'Data Analysis > Real Estate' 카테고리의 다른 글
서울 주요 핫플레이스(홍대입구, 건대입구, 이태원, 명동) 방문객 분석 with 지하철역 하차 인원 수 (0) 2021.05.19 서울시 전통시장 현황 분석 With Python, Mapbox, Pydeck (0) 2021.04.17 서울 내 스타벅스가 가장 많은 지역을 알아보자 - 스타벅스 위치 데이터 분석 With Python (0) 2021.04.01 국내 대형마트(홈플러스, 이마트, 롯데마트) 위치 데이터 분석 & 시각화 With Python/Mapbox (0) 2021.03.30 20년 서울시 행정구역별 전세 값 데이터 분석 & 시각화 with Python/Mapbox (0) 2021.03.04