📌
# 서울시 경찰서별 범죄율 데이터와 경찰서 위치 데이터 읽기
import numpy as np
import pandas as pd
crime_Seoul = pd.read_csv("data/02. crime_in_Seoul.csv",
thousands=',', encoding="cp949")
crime_Seoul.info()
police_state = pd.read_csv("data/경찰관서 위치.csv", encoding="cp949")
police_state
police_state.info()

# 지방청 컬럼의 내용 조회
police_state["지방청"].unique()

# police_Seoul 데이터에 서울청 데이터만 저장하기
#1
police_Seoul = police_state[police_state["지방청"] == '서울청']
police_Seoul.info()
#2
police_Seoul = police_state.groupby("지방청").get_group("서울청")
police_Seoul.info()
police_Seoul["지방청"].unique()

# police_Seoul 데이터에 경찰서 컬럼 값의 종류 출력하기
police_Seoul["경찰서"].unique()
crime_Seoul["관서명"].unique()

# police_Seoul 데이터의 경찰서 컬럼의 내용을
# xx서로 이름을 변경하여 관서명 컬럼으로 생성하기
police_Seoul["관서명"] = police_Seoul["경찰서"].\\
apply((lambda x : str(x[2:] + '서')))
police_Seoul["관서명"].unique()
crime_Seoul["관서명"].unique()
police_Seoul.head(10)



#1. police_Seoul 데이터에 지방청, 경찰서, 구분 컬럼 제거하기
del police_Seoul["지방청"],police_Seoul["경찰서"],police_Seoul["구분"]
police_Seoul.info()

#2. police_Seoul["관서명"] 중복행을 제거하기
# drop_Duplicates() 함수 사용
police_Seoul.head(10)
police_Seoul =\\
police_Seoul.drop_duplicates(subset=["관서명"])
police_Seoul.info()

# police_Seoul 데이터의 주소 컬럼을 이용하여 구별 컬럼을 생성하기
# police_Seoul 데이터의 주소 컬럼 제거하기
#1
police_Seoul["구별"] = police_Seoul["주소"].apply((lambda x : str(x).split()[1]))
police_Seoul["구별"]

#2
del police_Seoul["주소"]
police_Seoul.info()

# 관서명을 연결컬럼으로 crime_Seoul, police_Seoul 데이터 병합하기
data_result = pd.merge(crime_Seoul, police_Seoul, on="관서명")
data_result

# 구별 범죄의 합계를 출력하기
crime_sum = data_result.groupby("구별").sum()
crime_sum

# 범죄 종류(강간,강도,살인,절도,폭력)별 검거율 컬럼추가 하기
# 검거율 = 검거/발생 * 100
col_list = ['강간','강도','살인','절도','폭력']
for col in col_list :
crime_sum[col + "검거율"] =\\
crime_sum[col + "검거"] / crime_sum[col + " 발생"] * 100
print(crime_sum[col + "검거율"])
crime_sum.info()

# 검거율 데이터 중 100보다 큰값은 100으로 변경하기
for col in col_list:
crime_sum.loc[crime_sum[col+"검거율"]>=100,col+"검거율"]=100
for col in col_list:
print(crime_sum.loc[crime_sum[col+"검거율"]>=100,col+"검거율"])
print(crime_sum["절도검거율"])
# 구별 절도 검거율은 수평막대그래프로 출력하기
# 절도 검거율이 높은 구 부터 그래프로 작성하기
crime_sum["절도검거율"].sort_values().plot\\
(kind="barh",grid=True,figsize=(8,8))

# 경찰서별 절도검거율을 수평막대그래프로 출력하기
# 절도 검거율이 높은 구 부터 그래프로 작성하기
crime_Seoul.info()
#1. 절도검거율 컬럼 생성
crime_Seoul["절도검거율"] =\\
crime_Seoul["절도 검거"] / crime_Seoul["절도 발생"] * 100
crime_Seoul["절도검거율"]

# 인덱스값 변경
crime_Seoul.set_index("관서명",inplace=True)
#2.그래프 작성
crime_Seoul["절도검거율"].sort_values().plot\\
(kind="barh", grid=True,figsize=(8,8))

police_state = pd.read_csv("data/경찰관서 위치.csv", encoding="cp949")
police_Seoul = \\
police_state.groupby("지방청").get_group("서울청")
police_Seoul.info()
police_Seoul = police_Seoul[["경찰서","주소"]]
police_Seoul["구별"] = \\
police_Seoul["주소"].apply(lambda x : str(x).split()[1])
police_Seoul.head()
police_Seoul = police_Seoul.drop_duplicates("경찰서")
police_Seoul
police_Seoul["구별2"] = police_Seoul["주소"].str.split().str[1]
police_Seoul.head()
'수업(국비지원) > Python' 카테고리의 다른 글
| [Python] 머신러닝 - 지도학습(회귀분석)1 (0) | 2023.04.26 |
|---|---|
| [Python] crime_in_Seoul.csv파일과 경찰관서 위치.csv파일 분석하기2 (0) | 2023.04.26 |
| [Python] CCTV_in_Seoul.csv파일과 population_in_Seoul.xls파일을 분석하기 (0) | 2023.04.26 |
| [Python] drinks.csv 파일 분석하기4 (0) | 2023.04.26 |
| [Python] drinks.csv 파일 분석하기3 (0) | 2023.04.26 |