본문 바로가기
문송충의 코딩하기/파이썬 데이터 분석

[파이썬] - Folium 활용하여 서울시 구 기준 인구수 시각화 하기

by 동장군님 2020. 11. 22.
728x90
반응형

이번 포스팅에서는 시각화 패키지 Folium을 활용해서 서울시 구 기준으로 인구수를 시각화하도록 하겠다. 인구 데이터는 아래 링크와 같이 국가통계포털에서 가져왔다. 그럼 시각화를 위한 준비는 모두 끝났고, 코드만 아래처럼 따라 하면 된다. 그렇게 어렵지 않다.

 

kosis.kr/statisticsList/statisticsListIndex.do?menuId=M_01_01&vwcd=MT_ZTITLE&parmTabId=M_01_01&statId=1962001&themaId=A#SelectStatsBoxDiv

 

KOSIS 국가통계포털

통계목록검색 통계목록검색 통계목록검색 통계표명검색 검색어입력 검색 전체목록받기 부분목록받기 처리중입니다. 잠시만 기다려 주세요.

kosis.kr

 

 

Python Code

Folium을 활용하기 위해서는 우선 "pip install folium"을 통해 먼저 패키지를 설치해야 한다. 추가로 위 링크에서 다운 받은 인구수 데이터에서는 서울시뿐만 아니라 전국 데이터가 포괄적으로 다 포함되어 있기 때문에 서울시 구 기준으로 필터링해야 한다. 그리고 여기 구 이름 칼럼에는 함정이 있는데 보기에는 한글밖에 없었는데 확인해보니 이상한 특수문자와 같이 있었다. 정규표현식으로 한글만 추출하는 작업도 필요하다.

 

import folium
import pandas as pd
import json
import re



geo_json='https://raw.githubusercontent.com/southkorea/seoul-maps/master/kostat/2013/json/seoul_municipalities_geo_simple.json'

df=pd.read_excel('C:/Users/동섭/Downloads/인구수.xlsx',skiprows=1)
df2=df[['행정구역별(읍면동)','총인구 (명)']]
df2.columns=['name','values']
df2=df2[5:30]
df2=df2.sort_values(by='name')
df2['name']=df2['name'].apply(lambda x: re.compile('[가-힣]+').findall(x)[0])

m=folium.Map(
    location=[37.566345,126.977893],
    tiles='Stamen Terrain'
)

folium.Choropleth(
    geo_data=geo_json,
    name='choropleth',
    data=df2,
    columns=['name','values'],
    key_on='feature.properties.name',
    fill_color='YlGn',
    fill_opacity=0.7,
    line_opacity=0.2
).add_to(m)

 

 

Result

위에서 만든 m 변수를 출력하면 아래와 같은 그래프가 나올 것이다. 진한 색일수록 인구 수가 많고 색이 옅을수록 인구 수가 적은 스케일로 보면 된다.

 

 

728x90
반응형

댓글