[Python] 데이터 시각화 (지도/ Folium, GeoJSON)
시각화할 데이터는 [Python] pandas, seaborn 실습에서 사용한걸 활용합니다.
목차>
목차
01 Folium
Folium은 leaftlet.js를 기반으로 하는 Python 지도 시각화 라이브러리입니다.
- 지도 데이터 : https://github.com/southkorea/southkorea-maps 에서 서울만 따로 추린 GeoJSON 데이터를 활용합니다.
(southkorea-maps/kostat/2013/json/skorea_municipalities_geo_simple.json)
Folium library 설치 :
- pip install folium==0.5.0
- pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org folium==0.5.0
- conda install folium==0.5.0
02 GeoJSON
JSON 데이터 형식을 활용한 공간 데이터 교환 포맷(Geospatial Data Interchange Format)
- GeoJSON에서 Feature는 Geometry object와 속성정보를 담고 있고, Feature 컬렉션은 Feature의 집합으로 구성됩니다.
<참고>
http://www.onspatial.com/2010/01/geojson-format-specification.html
https://en.wikipedia.org/wiki/GeoJSON
03 지도를 활용한 데이터 시각화
우선 github에서 가져온 파일이 json형식이기 때문에 json을 import해주고 json변수를 만들어 줍니다.
import json
geo_path = 'skorea_municipalities_geo_simple.json'
geo_str = json.load(open(geo_path, encoding='utf-8')) # 'r'모드 생략
출력해보면 아래와 같이 dict타입의 json형식이 출력되는것을 볼 수 있습니다.
json에 대해서 더 알고싶다면 -> JSON이란?
03_01 folium.Map( )
folium을 사용하기 위해 import해줍니다.
folium.Map()을 이용하여 지도 객체를 만들어 줍니다.
- location = [위도, 경도]
- zoom_start : map객체 실행 후 지도의 확대 정도
- tiles : 지도 타입 (default type, "Stamen Terrain", "Stamen Toner")
import folium
map = folium.Map(location=[37.5502, 126.982], zoom_start=11, tiles='Stamen Toner')
03_02 map.choropleth( )
choropleth는 Pandas DataFrames/Series와 Geo/TopoJSON 지오메트리 간에 데이터를 바인딩하여 쉽게 만들 수 있습니다. Color Brewer 순차 색 구성표는 라이브러리에 내장되어 있으며 다른 조합을 빠르게 시각화하기 위해 전달할 수 있습니다.
- geo_data : 지도 데이터 파일 경로
- data : 시각화 하려는 데이터파일
- columns : [지도 데이터와 매핑할 값, 시각화 할 변수]
- fill_color : 시각화에 쓰일 색https://colorbrewer2.org/#type=sequential&scheme=BuGn&n=3
- key_on : 컬러 범주 이름, json 파일(지도 데이터)의 "feature" type의 "id" 에 매칭됩니다.
map.choropleth(geo_data = geo_str,
data = gu_df['살인'],
columns = [gu_df.index, gu_df['살인']],
fill_color = 'PuRd',
key_on = 'feature.id')