Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

RUBY

[CRIME] 12. 서울시 범죄현황 데이터 시각화(pair plot, heat map) 본문

데이터 분석/EDA_웹크롤링_파이썬프로그래밍

[CRIME] 12. 서울시 범죄현황 데이터 시각화(pair plot, heat map)

ruby-jieun 2023. 2. 3. 21:22

 

 

 

서울시 범죄 현황 데이터 분석 프로젝트
12. 서울시 범죄현황 데이터 시각화(pair plot, heat map)


 

 

1. matplotlib의 한글 폰트잡기

import matplotlib.pyplot as plt 
import seaborn as sns 
from matplotlib import rc 

plt.rcParams["axes.unicode_minus"] = False 
get_ipython().run_line_magic("matplotlib", "inline")
rc("font", family="Malgun Gothic")

 

 

 

2. 데이터 확인하기

crime_anal_norm.head()

 

 

 

3. pairplot으로 강도, 살인, 폭력에 대한 상관관계를 확인해보자.

 해석 1 . 폭력사건이 살인으로 이어지는 경우가 강도 사건이 살인으로 이어지는 것보다 더 많다.

 해석 2. 강도와 폭력은 상관관계가 매우 높다.

sns.pairplot(data=crime_anal_norm, vars=["살인", "강도", "폭력"], kind="reg", height=3);

 

 

4. 인구수, CCTV와 살인, 강도와의 관계 확인

def drawGraph():
    sns.pairplot(
        data=crime_anal_norm, 
        x_vars=["인구수", "CCTV"],
        y_vars=["살인", "강도"],
        kind="reg",
        height=4
    )
    plt.show()
drawGraph()

- 해석1-1. 인구수가 증가하는 것에 비해 강도가 많이 증가한다고 볼 수는 없다. 

  (아웃라이어도 존재하며, 이를 제외하면 증가폭은 더욱 줄어들 것이다)
- 해석1-2. 강남3구가 인구수가 많은 곳이라면, 강도 발생 비율이 낮으니까 안전하다고 느낄 수 있지 않을까? 
- 해석2-1. 인구수가 증가함에 따라 살인은 증가하는 경향을 보인다. 
- 해석2-2. CCTV가 많이 설치되어있을 수록 강도 사건이 많이 일어난다?

  이는 해석의 오류. 그렇다면 CCTV가 많아서 강도사건이 많이 발생하니까, CCTV를 줄여야한다 라고 연결될 수 있다. 
- 해석2-2. 강도 사건이 많이 발생하는 곳에 CCTV를 많이 설치한 것일 수도 있다. 
- 해석2-2. 아웃라이어를 제외하면, 회귀선이 조금 더 내려가서 해석을 달리 할 수 있는 여지가 있다. 

 

 

5. 인구수, CCTV와 살인/ 폭력검거율의 관계를 보자

def drawGraph():
    sns.pairplot(
        data=crime_anal_norm, 
        x_vars=["인구수", "CCTV"],
        y_vars=["살인검거율", "폭력검거율"],
        kind="reg",
        height=4
    )
    plt.show()
drawGraph()

- 해석1-1. 인구수가 증가할 수록 폭력검거율이 떨어진다. 
- 해석2-1. 인구수와 살인검거율은 조금 높아지는 것 같은 느낌?
- 해석3-1. CCTV와 살인검거율은 해석하기 애매(100에 모여있는 이유는, 검거율은 100으로 제한했기 때문) 
- 해석4-1. CCTV가 증가할수록 폭력검거율이 약간 하향세를 보인다. 

 

 

 

6. 인구수, CCTV와 절도/강도 검거율의 관계

def drawGraph():
    sns.pairplot(
        data=crime_anal_norm, 
        x_vars=["인구수", "CCTV"],
        y_vars=["절도검거율", "강도검거율"],
        kind="reg",
        height=4
    )
    plt.show()
drawGraph()

- 해석1-1. CCTV가 증가할수록 절도검거율이 감소하고 있다. 
- 해석2-1. CCTV가 증가할수록 강도검거율은 증가하고 있다. 

 

 

7.

 - 검거율만 가지고 heat map

 - "검거" 컬럼을 기준으로 정렬한다.

def drawGraph():

    target_col = ["강간검거율", "강도검거율", "살인검거율", "절도검거율", "폭력검거율", "검거"]
    crime_anal_norm_sort = crime_anal_norm.sort_values(by="검거", ascending=False)

    plt.figure(figsize=(10, 10))
    sns.heatmap(
        data=crime_anal_norm_sort[target_col],
        annot=True,
        fmt="f", 
        linewidths=0.5, 
        cmap="RdPu",
    )
    plt.title("범죄 검거 비율(정규화된 검거의 합으로 정렬")
    plt.show()
drawGraph()

 - 검거율이 높은 곳을 보면 강남3구가 없다.

 

 

8.

 - 범죄발생 건수 heatmap

 - "범죄" 칼럼을 기준으로 정렬하자

def drawGraph():
    
    target_col = ["살인", "강도", "강간", "절도", "폭력", "범죄"]
    crime_anal_norm_sort = crime_anal_norm.sort_values(by="범죄", ascending=False)
    
    plt.figure(figsize=(10, 10))
    sns.heatmap(
        data=crime_anal_norm_sort[target_col],
        annot=True,
        fmt="f",
        linewidths=0.5,
        cmap="RdPu",
    )
    plt.title("범죄 비율(정규화된 발생 건수로 정렬)")
    plt.show()

drawGraph()

- 강남구는 살인을 제외하면, 전부 1등이다.
- 서초구도 상위권에 속한다.
- 검거율은 낮은데, 범죄 발생 비율이 높다. 
- 강남 송파 서초구가 과연 안전할까? 라는 의문을 계속 가질 수 있다.

 

데이터 저장 후 마무리..

Comments