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] 9. 구별 데이터 얻기 본문

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

[CRIME] 9. 구별 데이터 얻기

ruby-jieun 2023. 2. 3. 03:23

 

 

 

서울시 범죄 현황 데이터 분석 프로젝트
9. 구별 데이터 얻기


 

 

 

 

구별 데이터 얻기

 - 경찰서별 데이터로 정리되어 있다.

 - 서울은 한 구에 경찰서가 두 곳인 구가 있다.

 - 그러므로 구의 이름으로 다시 정렬해야 한다.

 

 

1.

 - 데이터를 다시 읽어오자

 - 중간에 데이터를 파일로 저장해두면 테스트 코드가 긴 경우에 중간부터 다시 작업할 수 있다.

     # index_col "구분"을 인덱스 컬럼으로 설정

crime_anal_station = pd.read_csv(
    "../data/02. crime_in_Seoul_raw.csv", index_col=0, encoding="utf-8")
crime_anal_station.head()

 

 

 

2. 

 - pivot_table을 이용해서 구별로 정리하자

 - pivot_table의 func을 sum으로 잡자

 - 필요없는 컬럼은 제거(del)한다.

crime_anal_gu = pd.pivot_table(crime_anal_station, index="구별", aggfunc=np.sum)

del crime_anal_gu["lat"]
crime_anal_gu.drop("lng", axis=1, inplace=True)

crime_anal_gu.head()

 

 

 

3.

 - 검거율 생성

 - 하나의 컬럼을 다른 컬럼으로 나눈다.

crime_anal_gu["강도검거"] / crime_anal_gu["강도발생"]

 

 

 

4.

 - 다수의 컬럼을 다른 컬럼으로 나누기 

crime_anal_gu[["강도검거", "살인검거"]].div(crime_anal_gu["강도발생"], axis=0).head(3)

 

 

 

5.

 - 다수의 컬럼을 다수의 컬럼으로 각각 나누기

num = ["강간검거", "강도검거", "살인검거", "절도검거", "폭력검거"]
den = ["강간발생", "강도발생", "살인발생", "절도발생", "폭력발생"]

crime_anal_gu[num].div(crime_anal_gu[den].values).head()

 

 

 

6.

target = ["강간검거율", "강도검거율", "살인검거율", "절도검거율", "폭력검거율"]

num = ["강간검거", "강도검거", "살인검거", "절도검거", "폭력검거"]
den = ["강간발생", "강도발생", "살인발생", "절도발생", "폭력발생"]

crime_anal_gu[target] = crime_anal_gu[num].div(crime_anal_gu[den].values) * 100 
crime_anal_gu.head()

 

 

7.

 - 필요없는 컬럼을 제거한다.

del crime_anal_gu["강간검거"]
del crime_anal_gu["강도검거"]
crime_anal_gu.drop(["살인검거", "절도검거", "폭력검거"], axis=1, inplace=True)

crime_anal_gu.head()

 

 

 

8.

 - 당연히 작년 발생 범죄도 검거했을테니, 단순 계산상으로는 검거율이 100이 넘을 수 있다.

 - 이에 대해서라면 발생 연도와 검거 연도를 구분하고 분석하여야겠지만, 아직 스터디 단계이니 디테일까지는 무시하고

 - 나중에 heatmap 등의 그래프에서 문제가 될 수 있어 강제로 100이상의 수치는 100으로 만들어본다.

 

 

 

9.

 - 100보다 큰 숫자 찾아서 바꾸기

crime_anal_gu[crime_anal_gu[target] > 100] = 100 
crime_anal_gu.head()

 

 

10.

 - 컬럼명을 보기 좋게 바꿔준다.

crime_anal_gu.rename(columns={"강간발생": "강간", "강도발생": "강도", "살인발생": "살인", "절도발생": "절도", "폭력발생": "폭력"},
                    inplace=True)
crime_anal_gu.head()

 

Comments