import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("C:/데사프로젝트 데이터셋/경찰청_범죄 발생 지역별 통계_2024.04.csv", encoding='euc-kr')
# 지역 2번째부터
region_columns = df.columns[2:]
# 노가다
gyeonggi = ['경기 고양', '경기 과천', '경기 광명', '경기 광주', '경기 구리', '경기 군포', '경기 김포', '경기 남양주', '경기 동두천', '경기 부천', '경기 성남',
'경기 수원', '경기 시흥', '경기 안산', '경기 안성', '경기 안양', '경기 양주', '경기 여주', '경기 오산', '경기 용인', '경기 의왕', '경기 의정부',
'경기 이천', '경기 파주', '경기 평택', '경기 포천', '경기 하남', '경기 화성']
gangwon = ['강원 강릉', '강원 동해', '강원 삼척', '강원 속초', '강원 원주', '강원 춘천', '강원 태백']
chungbuk = ['충북 제천', '충북 청주', '충북 충주']
chungnam = ['충남 계룡', '충남 공주', '충남 논산', '충남 당진', '충남 보령', '충남 서산', '충남 아산', '충남 천안']
jeonbuk = ['전북 군산', '전북 김제', '전북 남원', '전북 익산', '전북 전주', '전북 정읍']
jeonnam = ['전남 광양', '전남 나주', '전남 목포', '전남 순천', '전남 여수']
gyeongbuk = ['경북 경산', '경북 경주', '경북 구미', '경북 김천', '경북 문경', '경북 상주', '경북 안동', '경북 영주', '경북 영천', '경북 포항']
gyeongnam = ['경남 거제', '경남 김해', '경남 밀양', '경남 사천', '경남 양산', '경남 진주', '경남 창원', '경남 통영']
jeju = ['제주 서귀포', '제주 제주']
seoul = ['서울']
busan = ['부산']
daegu = ['대구']
incheon = ['인천']
gwangju = ['광주']
daejeon = ['대전']
ulsan = ['울산']
sejong = ['세종']
region_sum = df[region_columns].sum()
# 각 도별 합산
gyeonggi_sum = region_sum[gyeonggi].sum()
gangwon_sum = region_sum[gangwon].sum()
chungbuk_sum = region_sum[chungbuk].sum()
chungnam_sum = region_sum[chungnam].sum()
jeonbuk_sum = region_sum[jeonbuk].sum()
jeonnam_sum = region_sum[jeonnam].sum()
gyeongbuk_sum = region_sum[gyeongbuk].sum()
gyeongnam_sum = region_sum[gyeongnam].sum()
jeju_sum = region_sum[jeju].sum()
# 서울, 부산, 대구, 인천, 광주, 대전, 울산, 세종
seoul_sum = region_sum[seoul].sum()
busan_sum = region_sum[busan].sum()
daegu_sum = region_sum[daegu].sum()
incheon_sum = region_sum[incheon].sum()
gwangju_sum = region_sum[gwangju].sum()
daejeon_sum = region_sum[daejeon].sum()
ulsan_sum = region_sum[ulsan].sum()
sejong_sum = region_sum[sejong].sum()
# 지역별 인구 수
population = {"서울": 9335495,"부산": 3268993, "대구": 2364334,"인천": 3018589, "광주": 1409624,"대전": 1439687,"울산": 1098312, "세종": 390603,
"경기": 13690645,"강원": 1518700,"충북": 1591100,"충남": 2136632,"전북": 1739751,"전남": 1789610,"경북": 2533979,"경남": 3230071,"제주": 670632}
# 결과 데이터프레임
result = {
"지역": [ "서울", "부산", "대구", "인천", "광주", "대전", "울산", "세종","경기", "강원", "충북", "충남", "전북", "전남", "경북", "경남", "제주"],
"범죄 발생 합계": [
seoul_sum, busan_sum, daegu_sum, incheon_sum, gwangju_sum, daejeon_sum, ulsan_sum, sejong_sum,
gyeonggi_sum, gangwon_sum, chungbuk_sum, chungnam_sum, jeonbuk_sum, jeonnam_sum, gyeongbuk_sum, gyeongnam_sum, jeju_sum
],
"인구 수": [
population["서울"], population["부산"], population["대구"], population["인천"], population["광주"],
population["대전"], population["울산"], population["세종"], population["경기"], population["강원"],
population["충북"], population["충남"], population["전북"], population["전남"], population["경북"],
population["경남"], population["제주"]
]
}
df_result = pd.DataFrame(result)
df
df_result["범죄발생합계/인구수"] = df_result["범죄 발생 합계"] / df_result["인구 수"]
df_result
# 원도표
plt.figure(figsize=(10, 8))
plt.pie(df_result["범죄발생합계/인구수"], labels=df_result["지역"], autopct='%1.1f%%', colors=plt.cm.Paired.colors, startangle=140)
plt.title('범죄 발생 합계/인구수 비율 (지역별)', fontsize=14)
plt.axis('equal') # 원이 길쭉해지지 않도록 비율을 맞춤
plt.show()
average_ratio = df_result["범죄발생합계/인구수"].mean()
print(f"범죄발생합계/인구수의 평균: {average_ratio:.6f}")