Patrick's 데이터 세상
Python 데이터 분석 - 지도 시각화(EDA) 본문
반응형
SMALL
◎ 지도 시각화
범죄 별로 빈도수를 지역에 나타내는 지도 시각화 방법 구현
* 실습 data는 '파이썬으로 데이터 주무르기'의 data입니다.
필자는 folium으로 실습하지만 google-map 라이브러리도 많이 이용.
참고 파일 : seoul-crime-analysis.html
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
crime_anal_norm = pd.read_csv('data_files/crime-in-seoul-final.csv',
encoding='utf-8')
crime_anal_norm = crime_anal_norm.set_index(["구별"]) # 일반 컬럼을 인덱스 컬럼으로 변경
crime_anal_norm.head()
결과
#!pip install folium # !command -> terminal command
import folium
import json
geo_path = 'data_files/skorea-municipalities-geo-simple.json'
geo_str = json.load(open(geo_path, encoding='utf-8')) # 딕셔너리
map = folium.Map(location=[37.5502, 126.982], # 지도의 중심 위치(위도, 경도)
zoom_start=11, # 0~18 단계
tiles='Stamen Toner') # Stamen Toner, Stamen Terrain, ...
# 지도에 영역 표시
folium.Choropleth(geo_data = geo_str,
data = crime_anal_norm['살인'],
columns = [crime_anal_norm.index, crime_anal_norm['살인']],
fill_color = 'PuRd', #PuRd, YlGnBu
key_on = 'feature.id').add_to(map)
map
결과
map = folium.Map(location=[37.5502, 126.982], zoom_start=11,
tiles='Stamen Toner')
folium.Choropleth(geo_data = geo_str,
data = crime_anal_norm['강간'],
columns = [crime_anal_norm.index, crime_anal_norm['강간']],
fill_color = 'PuRd', #PuRd, YlGnBu
key_on = 'feature.id').add_to(map)
map
결과
crime_anal_raw = pd.read_csv('data_files/crime-anal-raw.csv',
encoding='utf-8')
#crime_anal_raw['lat'] = station_lat
#crime_anal_raw['lng'] = station_lng
col = ['살인 검거', '강도 검거', '강간 검거', '절도 검거', '폭력 검거']
tmp = crime_anal_raw[col] / crime_anal_raw[col].max()
crime_anal_raw['검거'] = np.sum(tmp, axis=1)
crime_anal_raw.head()
결과
⊙ Marker
map = folium.Map(location=[37.5502, 126.982], zoom_start=11)
for n in crime_anal_raw.index:
folium.Marker([crime_anal_raw['lat'][n],
crime_anal_raw['lng'][n]]).add_to(map)
map
결과
⊙ Circle Marker
map = folium.Map(location=[37.5502, 126.982], zoom_start=11)
for n in crime_anal_raw.index:
folium.CircleMarker([crime_anal_raw['lat'][n], crime_anal_raw['lng'][n]],
radius = crime_anal_raw['검거'][n]*10,
color='#3186cc', fill_color='#3186cc', fill=True).add_to(map)
map
결과
map = folium.Map(location=[37.5502, 126.982], zoom_start=11)
folium.Choropleth(geo_data = geo_str,
data = crime_anal_norm['범죄'],
columns = [crime_anal_norm.index, crime_anal_norm['범죄']],
fill_color = 'PuRd', #PuRd, YlGnBu
key_on = 'feature.id').add_to(map)
for n in crime_anal_raw.index:
folium.CircleMarker([crime_anal_raw['lat'][n], crime_anal_raw['lng'][n]],
radius = crime_anal_raw['검거'][n]*10,
color='#3186cc', fill_color='#3186cc', fill=True).add_to(map)
map
결과
반응형
LIST
'Data Analysis > EDA' 카테고리의 다른 글
Python 데이터 분석 - 통계분석 (0) | 2020.06.24 |
---|---|
Python 데이터 분석 - 통계분석 기초 (0) | 2020.06.24 |
Python 데이터 분석 - 탐색적 자료 분석 EDA (NumPy를 활용한 그래프, 산점도) (0) | 2020.06.24 |
Python 데이터 분석 - 통계 검정 (0) | 2020.06.24 |
Python 데이터 분석 - 탐색적 자료 분석 EDA (Na 데이터 처리, Seaborn 그래프) (0) | 2020.06.24 |
Comments