안녕하세요?
오늘은 구름 인공지능 교육에서 배운 서울시 범죄현황 통계자료 분석 및 시각화 활동을 복습하는 시간을 갖도록 하겠습니다.
저번시간까지 데이터 전처리하는 법에 대해 간단히 복습을 해보았고,
오늘은 지금까지 전처리해온 데이터들을 바탕으로 Folium library를 활용하여 지도 시각화 방법을 복습해보도록 하려고 합니다.
코드를 보기에 앞서, Folium library와 GeoJSON, pyprnt에 대해 간단히 설명을 하려고 합니다.
Folium library는 지도위에 데이터를 표현해주는 대표적인 파이썬 지도 시각화 라이브러리입니다.
Folium을 사용하여 지도를 생성하고, 그 위에 마커를 추가하거나 원으로 범위를 표기하는 등 다양한 추가 시각화를 진행할 수도 있고, 이를 html 파일로 내보내는 등 다양한 활동을 수행할 수 있습니다.
- 기본좌표 설정은 Map 함수를 이용해서 location에 위도, 경도값을 입력여 할 수 있고 zoom_start를 이용하여 지도의 확대 정도를 조정할 수 있습니다.
- 추가로, Marker함수를 이용하여 기존에 생성된 지도위에 마커를 추가할 수 있는데 popup을 이용해서 마우스 클릭시 표기할 팝업 문구를 지정할 수도 있고, icon을 사용하여 마커에 대한 스타일 변경도 가능합니다.(CircleMarker함수 사용시 마커가 원으로 나타납니다.)
!pip install folium==0.5.0
# 에러뜨면 cmd창에서 pip install==0.5.0
import folium
# 위도
latitude = 37.394946
# 경도
longitude = 127.111104
m = folium.Map(location=[latitude, longitude],
zoom_start=17,
width=750,
height=500)
folium.Marker([latitude, longitude],
popup='판교역',
icon=folium.Icon('red', icon='star')).add_to(m)
m
저희가 시각화에 활용할 데이터는 https://github.com/southkorea/southkorea-maps 에서 서울만 따로 추린 GeoJSON 데이터를 활용합니다.
(southkorea-maps/kostat/2013/json/skorea_municipalities_geo_simple.json)
GeoJSON은 위치정보를 갖는 점을 기반으로 체계적으로 지형을 표현하기 위해 설계된 개방형 공개 표준 형식으로 JSON 데이터를 활용하여 나타냅니다.
import json
geo_path = 'skorea_municipalities_geo_simple.json'
geo_str = json.load(open(geo_path, encoding='utf-8'))
geo_str
JSON형태의 구조를 쉽게 파악할 수 있게 해주는 도구로써 pyprnt가 있는데, 이는 리스트와 딕셔너리로 이루어져있는 복잡한 형태의 데이터를 보기쉽게 시각화하여 보여주는 도구입니다.
!pip install pyprnt==2.3.3
from pyprnt import prnt
prnt(geo_str, truncate=True, width=60)
이제 마지막으로 서울시 행정 구역별 5대 범죄 전체 발생 비율을 시각화 해보도록 하겠습니다 -!-!
map = folium.Map(location=[37.5502, 126.982], zoom_start=11, tiles='Stamen Toner')
map.choropleth(geo_data = geo_str, # 서울시 행정구역별 polygon drawing
data = crime_ratio['전체발생비율'], # 시각화의 대상이 될 데이터
columns = [crime_ratio.index, crime_ratio['전체발생비율']], # 1) df의 index 칼럼을 가져와 인식하고
fill_color = 'PuRd',
key_on = 'feature.id') # GeoJSON 규약을 따름, json 파일(지도 데이터)의 "feature" type의 "id" 에 매칭된다
map
오늘은 여기까지만 하고 다음시간에는 구글맵스 API를 사용해서 각 경찰서의 위도, 경도 정보를 가져와 구별 데이터 시각화가 아닌 경찰서별 데이터를 만들어 경찰서별로 검거율은 어떤지 확인해보고, 시각화까지 해보는 시간을 가져보도록 하겠습니다!
감사합니당.
서울시 범죄현황 통계자료 분석 및 시각화 (4) (0) | 2023.01.10 |
---|---|
서울시 범죄현황 통계자료 분석 및 시각화 (2) (0) | 2023.01.08 |
서울시 범죄현황 통계자료 분석 및 시각화 (1) (0) | 2023.01.05 |