프로그래밍/파이썬

데이터 분석 - 지도 시각화(with folium)

매 석 2023. 1. 16. 17:42
반응형

1. 단계 구분도

지역별 통계치를 색의 차이로 표현한 지도

 

2. 시군구별 인구 단계 구분도

소스 코드

import json
#지도 데이터
map = json.load(open('SIG.geojson', encoding='UTF-8'))

import pandas as pd
#통계 데이터
df=pd.read_csv('Population_SIG.csv')
#문자형태로 변환
df['code']=df['code'].astype(str)
#지역을 6개의 구간으로 나눔
bins=list(df["pop"].quantile([0,0.2,0.4,0.6,0.8,1]))
import folium
#배경 지도 
map_sig = folium.Map(location=[35.95, 127.7], #지도 중심 좌표
                     zoom_start=8, #확대 단계
                     tiles='cartodbpositron') #지도 종류
folium.Choropleth(
    geo_data=map, #지도 데이터
    data=df, #통계 데이터
    columns=('code','pop'), #df 행정 구역 코드 및 인구
    key_on='feature.properties.SIG_CD', #map 행정 구역 코드
    fill_color='YlGnBu', #컬러맵
    fill_opacity=1, #투명도
    line_opacity=0.5, #경계선 투명도
    bins=bins #계급 구간 기준값
).add_to(map_sig) #배경 지도에 추가

결과 사진

 

 

3. 서울시 동별 외국인 인구 단계 구분도

소스 코드

import json
#지도 데이터
seoul = json.load(open('EMD_Seoul.geojson',encoding='UTF-8'))
geo_seoul=json.load(open('SIG_Seoul.geojson',encoding='UTF-8'))

import pandas as pd
#통계 데이터
foreig = pd.read_csv('Foreigner_EMD_Seoul.csv')
foreig['code']=foreig['code'].astype(str)

#서울 지역을 6단계로 나눔
bins=list(foreig["pop"].quantile([0,0.2,0.4,0.5,0.6,0.7,0.8,0.9,1]))

import folium
#배경 지도 만들기 
map_seoul = folium.Map(location=[37.56,127], #중심 좌표
                       zoom_start=12, #확대 단계
                       tiles='cartodbpositron') #지도 종류
folium.Choropleth(
    geo_data=seoul, #지도 데이터
    data=foreig, #통계 데이터
    columns=("code","pop"), #행정구역코드, 인구
    key_on = 'feature.properties.ADM_DR_CD', #행정구역코드
    fill_color = 'Blues', #컬러맵
    nan_fill_color='White', #결측치 색
    fill_opacity=1, #투명도
    line_opacity=0.5, #경계선 투명도
    bins=bins #계급 구간 기준값
).add_to(map_seoul) #배경 지도에 추가

folium.Choropleth(geo_data=geo_seoul, #지도 데이터
                  fill_opacity=0, #투명도
                  line_opacity=4 #선 두께
).add_to(map_seoul) #지도에 추가

결과 사진

 

4. HTML 파일로 보기

map_seoul.html
9.65MB