한국 시/도별 지도 데이터로 지리 시각화를 해 보자!

raqoon·2021년 8월 11일
0
post-thumbnail

해당 코드의 데이터는 모두 제 Github repository에 있습니다.

공모전을 준비하던 중 지리 시각화를 할 일이 있었는데, 아무래도 전국 단위 지리 데이터(동별)은 용량이 크다 보니 시/도 별로 json 파일을 잘라서 쓰는 게 나을 거라 생각했다.

그래서 시/도 별로 geojson 파일을 만들어서, 17개 광역시도별 지리 데이터를 만들었다.
지리 데이터는 통계청의 데이터를 base로 가공한 대한민국 행정동 경계 파일을 사용했고, 저작권 문제가 없어서 원 repository를 표시한 채로 내 깃헙에 정리해 두었다.

해당 데이터는 다음과 같이 사용할 수 있다.
plotly express를 사용해서 서울의 동별 인구를 시각화 해 보았다.

import os, json
import pandas as pd
import plotly.express as px
!git clone https://github.com/raqoon886/Local_HangJeongDong.git
os.chdir('./Local_HangJeongDong')

with open('./hangjeongdong_서울특별시.geojson', 'r') as f:
    seoul_geo = json.load(f)
    
seoul_info = pd.read_csv('./sample.txt', delimiter='\t')
seoul_info = seoul_info.iloc[3:,:]
seoul_info = seoul_info[seoul_info['동']!='소계']
seoul_info['full_name'] = '서울특별시'+' '+seoul_info['자치구']+' '+seoul_info['동']
seoul_info['full_name'] = seoul_info['full_name'].apply(lambda x: x.replace('.','·'))
seoul_info['인구'] = seoul_info['인구'].apply(lambda x: int(''.join(x.split(','))))

fig = px.choropleth_mapbox(seoul_info,
                           geojson=seoul_geo,
                           locations='full_name',
                           color='인구',
                           color_continuous_scale='viridis', featureidkey = 'properties.adm_nm',
                           mapbox_style='carto-positron',
                           zoom=9.5,
                           center = {"lat": 37.563383, "lon": 126.996039},
                           opacity=0.5,
                          )

fig

profile
안녕!

0개의 댓글