Python

[Python] 폴리엄(Folium) 라이브러리(Library)

구루싸 2019. 9. 30. 23:53
반응형
SMALL

오늘은 조금 흥미로운 폴리엄(Folium) 라이브러리를 이용해보도록 하겠습니다

폴리엄(Folium) 라이브러리는 지도 위에 시각화를 할 수 있는 라이브러리입니다

폴리엄(Folium) 라이브러리는 기본 설치가 안되있어서 따로 설치가 필요하네요-_-

※ 설치 방법

맥(MAC) OS : 터미널 → conda install -c conda-forge folium 입력  y 입력  아나콘다 재기동

그런데 폴리엄(Folium)은 웹(Web) 기반 지도를 생성하여 여태해왔던 스파이더(Spyder) 같은 IDE로는 출력 결과를 볼 수 없습니다

그렇기 때문에 save() 메소드(Method)를 이용해 HTML 파일을 만들어서 확인하거나

웹(Web) 기반 IDE(Jupyter Notebook 등)를 이용해야합니다

# 판다스(Pandas)
import pandas
import json
# 폴리엄(Folium)
import folium

# 인천 지도 생성
filepath = "/Users/dennis_sa/Documents/"
incheon_map = folium.Map(location = [37.53, 126.74], # [위도, 경도]
                         tiles = 'Stamen Terrain', # Stamen Terrain - 지형 강조
                                                   # Stamen Toner - 도로 강조
                         zoom_start = 12)
# incheon_map 특정 위치에 마커를 표시하고 클릭시에 TEST 출력
folium.Marker([37.53, 126.74], popup = 'TEST').add_to(incheon_map) 
# incheon_map 특정 위치에 원형 마커를 표시하고 클릭시에 TEST 출력
folium.CircleMarker([37.60, 126.80],
                    radius = 10, # 원의 반지름
                    color = 'red', # 원의 둘레 색상
                    fill = True, # 원 채우기
                    fill_color = 'red', # 채우기 색상
                    fill_opacity = 0.7, # 투명도
                    popup = 'TEST').add_to(incheon_map)
incheon_map.save(filepath + "incheon.html")

# 경기도 인구변화 데이터
gyeonggi_data = pandas.read_excel(filepath + "경기도인구데이터.xlsx", index_col = '구분')
gyeonggi_data.columns = gyeonggi_data.columns.map(str)
print(gyeonggi_data, end = '\n')

# 경기도 시군구 경계 정보 데이터
try :
    boundary_data = json.load(open(filepath + "경기도행정구역경계.json", encoding = 'utf-8'))
except :
    boundary_data = json.load(open(filepath + "경기도행정구역경계.json", encoding = 'utf-8-sig'))
    
print(boundary_data, end = '\n')    

# 경기도 지도 생성
gyeonggi_map = folium.Map(location = [37.5502, 126.982],
                          tiles = 'Stamen Terrain',
                          zoom_start = 9)
year = '2017'

# 단계구분도 표시
folium.Choropleth(geo_data = boundary_data, # 경계 데이터
                  data = gyeonggi_data[year], # data
                  columns = [gyeonggi_data.index, gyeonggi_data[year]], # 열
                  fill_color = 'YlOrRd', # 채우기 색상
                  fill_opacity = 0.7, # 투명도
                  line_opacity = 0.3, # 선 투명도
                  threshold_scale = [10000, 50000, 100000, 300000, 500000, 700000], # 축적
                  key_on = 'feature.properties.name').add_to(gyeonggi_map)
gyeonggi_map.save(filepath + "gyeonggi.html")

위치 정보 데이터를 이용해 지도에 점을 찍거나 경계를 구분 지어보았습니다

지도를 통해 데이터를 분석하고자 할 때 유용할 것 같네요-_-

이것으로 폴리엄(Folium) 라이브러리(Library) 학습을 마치도록 하겠습니다

반응형
LIST