반응형
한전은 매달 전력통계월보를 발표한다. 해당 자료에는 여러가지 내용들이 반영되어 있는데, 그중에서 지역별 월전력판매량에 대해 한번 시각화를 해보려고 했고, leaflet.js에 기반한 파이썬 라이브러리인 folium을 이용하면 편하겠다 싶어 한번 만들어봤다.
아직은 더 스터디가 필요한 부분이라 대부분 folium 정식문서에 있는 코드들을 가져다 썼는데도 잘 돌아간다.
import json
import pandas as pd
import folium
from folium import plugins
from folium.plugins import HeatMap
# folium 그리기
month = '2020-04-30'
column_list = ['Month', 'Seoul', 'Busan', 'Daegu', 'Incheon',
'Gwangju', 'Daejeon', 'Ulsan', 'Gyeong-gi',
'Gangwon', 'Chungbuk', 'Chungnam', 'Jeonbuk',
'Jeonnam', 'Kyungbuk', 'Kyungnam', 'Jeju',
'Sejong', 'Hwangbuk', 'Total']
df = pd.read_csv('region.csv')
df.columns = column_list
# 광역지자체 SHP파일을 geojson 변환한 것을 읽어오기, 하단 참고내용 참조
state_geo = 'TL_SCCO_CTPRVN_Met.json'
json_data = open(state_geo, encoding='utf-8').read()
json_Result = json.loads(json_data)
dictionary = {'code': ['11', '26', '27', '28', '29', '30', '31', '41', '42',
'43', '44', '45', '46', '47', '48', '50', '36']}
region_data = pd.DataFrame(data=dictionary)
region_data['data'] = df.loc[df.Month == month, 'Seoul':'Sejong'].transpose().values
# 맵 그리기
bins = [0, 460017, 1228571, 1669235, 1975424, 2677516, 2853723, 3591552, 12000000]
m = folium.Map(location=[36, 127], zoom_start=7)
m.choropleth(
geo_data=json_data,
name='Electricity Use',
data=region_data,
columns=['code', 'data'],
key_on='feature.properties.CTPRVN_CD',
fill_color='BuPu',
fill_opacity=0.7,
line_opacity=0.3,
color='gray',
bins=bins
)
folium.LayerControl().add_to(m)
m.save(month+'.html')
마지막에 html로 다운로드 받은 것을 열어보면 아래 사진과 같이 잘 나오는 것을 확인할 수 있다. 다만, 바라는 것이 있다면 월별, 광역지자체별이 아닌 좀 더 작은단위(일별, 기초지자체별)로 쪼개서 줬으면 좋을 듯..
참고 및 도움받은 곳:
- GIS DEVELOPER, '대한민국 최신 행정구역(SHP) 다운로드', Retrieved from http://www.gisdeveloper.co.kr/?p=2332
- Folium 정식 문서, Retrieved from http://python-visualization.github.io/folium/index.html
- dailyheumsi, '[지도 데이터 시각화] Part1. Geo Data와 Python', Retrieved from https://dailyheumsi.tistory.com/141?category=854906
반응형
'Python > Visualization' 카테고리의 다른 글
Matplotlib으로 산점도 그리기 (Scatter plot) (0) | 2024.08.23 |
---|---|
Matplotlib으로 선 그래프(line plot) 그리기 | 보조축, 그래프 여러개 그리는 방법 (0) | 2024.08.23 |
Basemap 위에 국내 발전사업허가 현황 버블차트 그리기 | Matplotlib (0) | 2021.12.20 |
mpl-toolkits.basemap을 활용한 세계 발전소 데이터를 활용한 발전원별, 용량별 현황시각화 | Matplotlib (0) | 2021.11.13 |
파이썬으로 현금 + 주식 리밸런싱 시뮬레이션 하기 (0) | 2020.08.29 |