EDA - 범죄 데이터를 위한 데이터 정리
-이론-
- 검거율까지의 데이터는 잘정리 되었으나, 범죄 경중에 따른 발생건수 차이가 크다.
- 예를들어 살인은 한 자리 수 발생일 때, 절도는 네 자리 수 발생함.
구별 데이터에서 발생건수 정규화 데이터 생성
- 서로 크기가 다른 데이터들을 비교하기 위해 각각의 최대값으로 나누는 과정
- max() 활용
데이터프레임[특정컬럼] / 데이터프레임[특정컬럼].max()
정규화 데이터프레임에 범죄 검거율 컬럼 추가
정규화 데이터프레임에 인구수, CCTV수 컬럼 추가
정규화된 범죄 건수의 평균을 구하여 컬럼 추가
- numpy.mean() 이용
- axis=1 행의평균을 구함
검거율의 평균을 구하여 컬럼 추가
전체 데이터프레임
-실습-
데이터 정규화
정규화 데이터프레임에 검거율 추가
인구수와 CCTV 수 추가
구별 범죄 건수의 평균을 구함
np.mean()에 대해 알아보자
검거율 평균인 검거 컬럼 추가
EDA - Seaborn
-이론-
Seaborn 이란?
- Seaborn은 Matplotlib 기반의 고급 데이터 시각화 라이브러리
seaborn import 하기
효과
- seaborn에 관련된 어떤 작업을 하지 않아도 그래프가 더 화려해진다
set_style() 함수
despine() 함수
- 그래프의 상단 및 오른쪽 축 스파인(테두리)을 제거하여 그래프를 더 깔끔하게 만든다.
예제1 - tips
- seaborn 의 데이터 셋에서 실습용 데이터인 tips 활용
boxplot()
컬럼 지정하여 그래프 작성
hue 옵션
- 데이터의 하나의 변수를 색상으로 나타내는 방식
- palette= 색상을 지정할 수 있다.
swarmplot()
- 데이터 포인트를 겹치지 않게 표현하여 각 범주에 속하는 데이터의 분포와 밀도를 직관적으로 확인할 수 있다.
boxplot과 swarmplot 합치기
lmplot()
hue 옵션
- 데이터의 하나의 변수를 색상으로 나타내는 방식
예제2 - flights
- seaborn 의 데이터 셋에서 실습용 데이터인 tips 활용
pivot
heatmap
- 데이터의 2차원 배열(행렬)을 컬러 맵을 사용하여 시각화하는 데 사용한다.
- annot: 각 셀에 값을 표시할지 여부를 결정합니다. 기본값은 False입니다.
- fmt: 각 셀에 표시할 값의 형식을 지정하는 문자열입니다. annot=True일 때 사용한다.
색상변경
- cmap: 사용할 컬러 맵의 이름
예제3 - iris
pairplot
- 데이터프레임의 모든 피처(컬럼) 간의 산점도를 그리는 데 사용한다.
결과
hue 옵션
결과
원하는 컬럼만 지정
예제4 - anscombe
lmplot 을 이용해 그래프 작성
query
- 문자열 표현식을 사용하여 데이터프레임의 행을 필터링하는 데 사용한다.
scatter_kws 인자
- 산점도 그래프의 스타일을 사용자 정의
- s : 산점도 그래프의 점의 크기 조정
order 인자
order=1 -> 1차원 그래프
order=2 -> 2차원 그래프
robust 인자
- 그래프에서 이상치의 영향을 줄일 수 있다.
- robust=True로 설정하면, 이상치의 영향을 최소화하기 위해 사분위수 범위(IQR)를 사용하여 데이터 분포를 요약할 수 있다.
robust 사용 후
-실습-
seaborn 설치
그래프
np.linspace()
- 지정된 구간을 균일하게 나눈 값을 포함하는 배열을 생성
- 주로 그래프를 그리거나 샘플 포인트를 생성할 때 사용
sns.set_style()
예제 - tips
boxplot
swarmplot
boxplot, swarmplot
implot
예제 - filghts data
pivot
heatmap
예제 - ris data
pairplot
예제 - anscombe data
lmplot
EDA - 서울시 범죄 현황 데이터 시각화
데이터 불러오기
- 라이브러리 및 모듈
- 정규화된 데이터프레임 확인
pairplot - 컬럼간에 상관관계 확인
강도 살인 폭력에 대한 상관관계 확인
- sns.pairplot()
- kind='reg'
선형회귀데이터로는 큰 관계가 없어보인다.
인구수, CCTV와 살인, 강도의 상관관계 확인
- sns.pairplot()
- kind='reg'
선형회귀데이터로는 큰 관계가 없어보인다.
인구수, CCTV와 살인검거율, 폭력검거율의 상관관계 확인
- sns.pairplot()
- kind='reg'
이것도 크게 상관이 없어 보인다.
인구수, CCTV와 절도검거율, 강도검거율의 상관관계 확인
- sns.pairplot()
- kind='reg'
정렬하여 heatmap 확인
검거 기준으로 검거율 히트 맵 확인
강남구는 검거율이 상위권이다.
범죄 기준으로 5대 범죄 히트 맵 확인
강남구가 최대 범죄 발생지임을 확인할 수 있다.
데이터 저장
EDA - 지도 시각화 - Folium
folium 이란?
- 지도시각화 도구
- 지도 시각화 도구는 많지만, Folium의 만족도가 높다.
- 크롬에서 동작이 가장 좋다.
설치
아나콘다프롬프트
conda install -c conda-forge folium
주피터노트북
save()
folium.Map()
- 지도를 불러온다.
- location : 위도, 경도
- zoom_start : 표기할 지도 크기 0~18
tiles option
- tiles 옵션으로 지도 스타일을 바꿀 수 있다.
Stamen Toner
Stamen Terrain
CartoDB dark_matter
CartoDB positron
folium.Marker()
- 지도 상에 마커를 표기할 수 있다.
- 옵션 사용 시, html 문법을 사용할 수 있다.
- popup : 마커 클릭 시 표기
- tooltip : 마우스 포인터 근처에 가져가기만해도 표기
다양한 모양의 아이콘 지원 - folium.Icon()
- folium.Marker() 의 icon 옵션에 초기화되어 사용할 수 있다.
- 마커 내부의 기본으로 주어지는 아이콘 이외에 사용할 수 있다.
- color : 바탕 색 지정
- icon_color : 아이콘 색 지정
- angle : 아이콘 기울기 지정
- icon : 사용할 아이콘 지정
- prefix : 아이콘 사용 출처 입력
- 지도 클릭 시 마커 생성
- 일반 마커와 똑같이 팝업이 가능하다.
- 마커에 위도, 경도 정보를 팝업할 수 있다.
folium.Circle(), folium.CircleMarker()
- 지도에 원 마커를 표기
- Circle은 지도 배율에 상관없이 원의 반지름 고정, CircleMarker은 지도 배율에 따라 원의반지름 변경
- 색상 선택시 colour picker 를 이용하면 세부적으로 선택할 수 있다.
- radius : 원의 크기
- color : 원의 선 색상
- fill : True/False - 내부를 색깔칠할지 말지
- fill_color : 내부 채우기 색상
- popup : 팝업
- tooltip : 툴팁
folium.Choropleth
- 지리학적 영역에 대한 정보를 색상이나 패턴으로 나타내는 지도 유형
제이슨 파일을 쓸 수 있도록 준비 - 02. us-states.json
- 주의 id가 표기되어 있음
- id를 기반으로 미국 주의 국경이 그려진 데이터 파일
미국 주별 실업율 파일 불러오기 - 02. US_Unemployment_Oct2012.csv
- 주의 id가 표기되어 있음
- id를 기반으로 미국 주의 실업 데이터가 입력된 파일
json, cvs 파일의 서로 같은 id 데이터를 이용하여 매칭시킨 뒤, 주별 실업율을 지도에 색상차이로 표기한다.