티스토리 뷰
제 2장 서울시 범죄 현황 분석¶
구성 및 블로깅 진행과정¶
2-1 데이터 획득하기
2-2 pandas를 이용하여 데이터 정리하기
2-3 지도 정보를 얻을 수 있는 Google Maps
2-4 Google Maps를 이용해서 주소와 위도, 경도 정보 얻기
-------------------------------------------------------
2-5 pandas의 pivot_table 학습하기
2-6 pivot_table을 이용해서 데이터 정리하기
2-7 데이터 표현을 위해 다듬기
-------------------------------------------------------
2-8 좀 더 편리한 시각화 도구 - Seaborn
2-9 범죄 데이터 시각화하기
-------------------------------------------------------
2-10 지도 시각화 도구 - folium
2-11 서울시 범죄율에 대한 지도 시각화
2-12 서울시 경찰서별 검거율과 구별 범죄 발생율을 동시에 시각화하기
출처: 파이썬으로 데이터 주무르기 by 민형기
2-1 데이터 획득하기¶
서울시 공공 데이터 사이트인 data.go.kr에 접속하여 서울시 관서별 5대 범죄 현황이라는 글을 찾아 데이터를 다운 받을 수 있다.
또 다른 방법으로는 책 저자 민형기님의 깃허브 사이트https://github.com/PinkWink/DataScience/tree/master/data
- crime_in_Seoul.csv
을 다운받는다.
2-2 pandas를 이용하여 데이터 정리하기¶
import numpy as np
import pandas as pd
# 살인, 강도, 강간, 절도, 폭력이라는 5대 범죄에 대한 발생 건수와 검거 건수.
crime_anal_police = pd.read_csv('pydata/02. crime_in_Seoul.csv', thousands=',',
encoding='euc-kr')
crime_anal_police.head()
강남 3구가 안전한지 알아보고자 하는 것이 목표!!
데이터를 읽는 과정에서 주의해야 할 점
- 데이터가 관서별로 되어있다. >> 경찰서 목록을 소속 구별로 변경하고 싶다.(경찰서 이름으로 구 정보를 알아야 한다.)
- 서울시는 한 구에 하나 혹은 두 군데의 경찰서가 위치해 있다.
- 구 이름과 경찰서 이름이 다른 경찰서도 있다.
2-3 지도 정보를 얻을 수 있는 Google Maps¶
Google Maps API에 접속하여 가입한다.(교육 목적으로 가입할 경우 1년 무료)
api 키가 발급되므로 키를 복사해서 준비한다.
터미널에 접속하여 pip install googlempas라는 명령어로 파이썬에 googlemaps를 사용할 수 있도록 설치한다.
2-4 Google Maps를 이용해서 주소와 위도, 경도 정보 얻기¶
#Googlempas를 import한다.
import googlemaps
# 자신의 api 키를 입력한다.
gmaps_key='**************************'
gmaps = googlemaps.Client(key=gmaps_key)
# Google Maps를 사용하여 '서울중부경찰서'를 검색해본다.
gmaps.geocode('서울중부경찰서', language='ko')
- 나중에 진행할 지도시각화에 유용한 정보
formatted_address : 주소
lng : 위도
lat : 경도
#경찰서의 이름이 '수서서'와 같이 나타나 있으므로 '서울수서경찰서'와 같은 형태로 만들자
station_name=[]
for name in crime_anal_police['관서명']:
station_name.append('서울' + str(name[:-1]) + '경찰서')
station_name
# 이제 경찰서의 이름을 활용하여 주소를 받아올 수 있다.
station_address = []
station_lat = []
station_lng = []
for name in station_name:
tmp = gmaps.geocode(name, language='ko')
station_address.append(tmp[0].get('formatted_address')) # 경찰서 주소 추가
tmp_loc = tmp[0].get('geometry')
station_lat.append(tmp_loc['location']['lat']) # 경찰서 위치의 위도 추가
station_lng.append(tmp_loc['location']['lng']) # 경찰서 위치의 경도 추가
print(name + '-->' + tmp[0].get('formatted_address'))
#주소
station_address[:5]
#위도
station_lat[:5]
#경도
station_lng[:5]
# 주소를 쪼갠다음 '구'가 들어있는 단어만 뽑아내어 '구별'이라는 컬럼에 추가해준다.
gu_name=[]
for name in station_address:
tmp = name.split()
tmp_gu = [gu for gu in tmp if gu[-1] == '구'][0]
gu_name.append(tmp_gu)
crime_anal_police['구별'] = gu_name
crime_anal_police.head()
주의 : 금천경찰서의 경우 관악구에 위치해 있었는데 금천구로 이전했기 때문에 변경해줘야 한다.
라고 되어있는데 이 데이터는 이미 금천구로 바뀌어 있어서 작업이 필요가 없다. ㅜ
# 금천서를 찾아준다.
crime_anal_police[crime_anal_police['관서명']=='금천서']
# 매번 데이터를 만드는 작업을 처음부터 할 수 없기때문에 저장을 하자.
crime_anal_police.to_csv('pydata/02. crime_in_Seoul_include_gu_name.csv', sep=',', encoding='utf-8')
crime_anal_police.head()
같은 구에 2개 이상의 경찰서가 있을수 있기 때문에 구별에는 같은 구가 2번 이상 있을 수 있다.
'beginner > 파이썬 분석' 카테고리의 다른 글
서울시 범죄 현황 분석 -3 (0) | 2019.07.03 |
---|---|
서울시 범죄 현황 분석 -2 (0) | 2019.07.03 |
서울시 구별 CCTV 현황 분석 -3 (0) | 2019.06.29 |
서울시 구별 CCTV 현황 분석-2 (0) | 2019.06.28 |
서울시 구별 CCTV 현황 분석-1 (1) | 2019.06.27 |