먼저 Folium은 Python data, leaflet.js 맵입니다.
Python에서 데이터를 조작한 다음 leaflet.js를 통해 데이터를 시각화합니다.
라이브러리에는 OpenStreetMap, Mapbox 및 Staten의 여러 타일 세트가 내장되어 있으며, Mapbox 또는 Cloudmade API 키를 사용하여 사용자 지정 타일 셋을 지원합니다. Folium은 이미지, 비디오, GeoJSON 및 TopoJ를 모두 지원합니다.
자세한 내용은 아래 주소 클릭
https://python-visualization.github.io/folium/
- 실습
먼저 실습할 데이터를 만들어줍니다.
from pandas import DataFrame
#예제 데이터 만들기
ex = {'경도' : [127.061026,127.047883,127.899220,128.980455,127.104071,127.102490,127.088387,126.809957,127.010861,126.836078
,127.014217,126.886859,127.031702,126.880898,127.028726,126.897710,126.910288,127.043189,127.071184,127.076812
,127.045022,126.982419,126.840285,127.115873,126.885320,127.078464,127.057100,127.020945,129.068324,129.059574
,126.927655,127.034302,129.106330,126.980242,126.945099,129.034599,127.054649,127.019556,127.053198,127.031005
,127.058560,127.078519,127.056141,129.034605,126.888485,129.070117,127.057746,126.929288,127.054163,129.060972],
'위도' : [37.493922,37.505675,37.471711,35.159774,37.500249,37.515149,37.549245,37.562013,37.552153,37.538927,37.492388
,37.480390,37.588485,37.504067,37.608392,37.503693,37.579029,37.580073,37.552103,37.545461,37.580196,37.562274
,37.535419,37.527477,37.526139,37.648247,37.512939,37.517574,35.202902,35.144776,37.499229,35.150069,35.141176
,37.479403,37.512569,35.123196,37.546718,37.553668,37.488742,37.493653,37.498462,37.556602,37.544180,35.111532
,37.508058,35.085777,37.546103,37.483899,37.489299,35.143421],
'구분' : ['음식','음식','음식','음식','생활서비스','음식','음식','음식','음식','음식','음식','음식','음식','음식','음식'
,'음식','음식','소매','음식','음식','음식','음식','소매','음식','소매','음식','음식','음식','음식','음식','음식'
,'음식','음식','음식','음식','소매','음식','음식','의료','음식','음식','음식','소매','음식','음식','음식','음식'
,'음식','음식','음식']}
ex=DataFrame(ex)
ex
Folium 라이브러리를 import하고 지도 띄우기
import folium
#지도의 중심을 지정하기 위해 위도와 경도의 평균 구하기
lat = ex['위도'].mean()
long = ex['경도'].mean()
#지도 띄우기
m = folium.Map([lat,long],zoom_start=9)
m
실행시키면 아래의 그림처럼 나오게 됩니다.
이제 지도 위에 데이터들을 표시해봅니다.
Folium 버전 문제로 한글 폰트가 jupyter 결과창에 안나오는데 이걸 해결하기 위해 html 파일로 저장시켜줍니다.
for i in ex.index:
sub_lat = ex.loc[i,'위도']
sub_long = ex.loc[i,'경도']
title = ex.loc[i,'구분']
#지도에 데이터 찍어서 보여주기
folium.Marker([sub_lat,sub_long],tooltip = title).add_to(m)
#한글이 안나오는 오류로 html로 trouble shooting
m.save('example.html')
m
example.html 파일을 열어주면 데이터들이 찍혀있는 것을 확인할 수 있습니다.
찍히는 마커 모양을 다르게 변형할 수도 있습니다.
동그라미 모양으로 데이터를 표시하고 싶을 때는 CircleMarker을 사용합니다.
#지도 새로 띄우기
m = folium.Map([lat,long],zoom_start=9)
for i in ex.index:
sub_lat = ex.loc[i,'위도']
sub_long = ex.loc[i,'경도']
title = ex.loc[i,'구분']
#구분이 소매면 빨간색으로 표시, default는 녹색
color = 'green'
if ex.loc[i,'구분'] == '소매':
color = "red"
#지도에 동그라미로 데이터 찍기
folium.CircleMarker([sub_lat,sub_long],color=color,radius = 5, tooltip=title).add_to(m)
#한글이 안나오는 오류로 html로 trouble shooting
m.save('example.html')
m
조금 더 심화된 내용은 Folium documentation에서 확인하실 수 있습니다.
https://python-visualization.github.io/folium/quickstart.html#Getting-Started
▼
▼
▼
▼
만약 색깔로 시각화를 하고 싶다면 아래의 URL을 참고 !
https://plotly.com/python/choropleth-maps/
'나는야 데이터사이언티스트 > PYTHON' 카테고리의 다른 글
[Python]파이썬에서 Oracle DB 연동하는 방법 (0) | 2020.10.27 |
---|---|
[Python]파이썬 스핑크스 - 파이썬 코드 문서화 하기 (0) | 2020.07.09 |
[Python/pandas]데이터 결측치 처리하기(보간법/보외법) -pandas.DataFrame.interpolate (0) | 2020.06.13 |
[Python]데이터분석 EDA 쉽게 하기 - pandas_profiling (0) | 2020.06.11 |
[Python] 결측치 시각화 하기 - missingno 종류 (0) | 2020.06.06 |