Chapter2 -2. 서울시 범죄 현황 분석 지도로 나타내기

안녕하세요! 여러분
오늘은 정리해 놓은 데이터를 바탕으로 지도로 시각화해보는 시간을 가져보도록 할거예요!
제가 지리학과라서 저는 데이터들을 지도로 시각화할 때 QGIS 나 Arc GIS를 사용하는데,
위의 툴을 이용해 지도로 분석하는 방법은 다음 시간에 이어서 알려드리도록 하겠습니다!
오늘은 먼저,
파이썬의 지도 시각화 도구인 Folium을 통해 지도에 데이터를 구현해보도록 할게요!
저희가 지도 상에 올릴 데이터는 지난 시간까지 정리한 데이터인 서울시 범죄율에 관한 데이터입니다!
파일명 crime_anal_norm으로 csv 파일 형식으로 데이터를 저장해놓았을텐데,
오늘 해당 데이터를 지도 위에 올려볼겁니다!
어때요? 기대되시나요~? 그럼 레쓰고!

1. 한국 지도 json 파일 얻어오기
- 링크 주소 https://github.com/southkorea/southkorea-maps 에 방문하여 한국의 행정구역 경계선이 그려진 지도를 다운 받습니다.
- 파일명: 02. skorea_municipalities_geo_simple.json (---> 하지만, 해당 데이터를 바로 사용할 수 없기 때문에 책에서 알려주는대로 <파이썬으로 데이터 주무르기> 의 github에서 정리해놓은 데이터를 다운받을 것입니다!)
- 파일:
2. 지도 시각화 도구 folium 설치하기
- 터미널을 열고 pip install folium 을 입력하여 folium 모듈을 설치합니다.
- import folium을 입력해 folium을 import 합니다.
3. 살인 발생 건수를 바탕으로 서울시 단계구분도 만들기
- map 변수에 Map()을 통해 서울시의 경위도 좌표를 입력하여 불러옵니다.
- choropleth()를 통해 crime_anal_norm 변수(지난 시간에 정리한 서울시 범죄 데이터를 변수명 crime_anal_norm으로 저장해두었던 것 기억나시죠?)의 칼럼명 '살인'에 해당하는 데이터들을 지정해줍니다.
*코드
import folium
import json
geo_path = r"C:\Users\hbsss\OneDrive\문서\DataScience\data\02. 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)
folium.Choropleth(geo_data=geo_str, data=crime_anal_norm['살인'], columns = [crime_anal_norm.index, crime_anal_norm['살인']], fill_color = 'PuRd', key_on = 'feature.id').add_to(map)
map
*결과
4. 강간 발생 건수를 바탕으로 서울시 단계구분도 만들기
- 위와 같은 방법으로, 칼럼명을 '강간'으로만 변경하고 지도를 다시 그려봅니다.
*결과
5. 범죄 발생 건수 전체에 대한 서울시 단계구분도 만들기
- 위와 같은 방법으로, 칼럼명 '범죄'로만 변경하고 지도를 다시 그려봅니다.
결과
6. 범죄수를 인구수로 나눈 인구 대비 범죄 발생 비율을 단계구분도로 시각화하기
- tmp_criminal 변수명에 crime_anal_norm의 '살인' 칼럼의 데이터를 '인구수' 칼럼의 데이터로 나눈 후 적당한 값을 곱해준 값을 저장합니다.
- tmp_criminal 값을 시각화할 데이터로 넣어줍니다.
*코드
tmp_criminal = crime_anal_norm['살인']/ crime_anal_norm['인구수'] * 1000000
map = folium.Map(location = [37.5502,126.982], zoom_start=11)
folium.Choropleth(geo_data = geo_str,
data = tmp_criminal,
columns = [crime_anal.index, tmp_criminal],
fill_color = 'PuRd',
key_on = 'feature.id').add_to(map)
map
*결과

강남 3구가 정말 범죄로부터 안전한 지대인지를 확인하기 위해 시작된 여정이었는데
지도를 통해 시각화를 해보니,
생각보다 다른 지역에 비해 안전한지는 잘 모르겠습니다!
다음 시간에는 검거율과 범죄 발생율을 동시에 지도 상에 시각화해볼테니,
더욱 제대로 알아보도록 합시다!
오늘도 수고 많았어요!
다음시간에 만나요~ 꿀
*참고자료
(더욱 자세한 내용은 책 속에 있으니, 해당 책과 아래 github를 참고해주세요~):
https://github.com/PinkWink/DataScience/blob/master/img/title.jpg