상세 컨텐츠

본문 제목

[K-DIGITAL] 세미프로젝트1. 서울시 자전거사고 분석(1) 문제분석

PYTHON/K-DIGITAL

by ranlan 2021. 6. 18. 23:43

본문

728x90

멋쟁이사자처럼 X K-DIGITAL Training - 06.17

 

 

[github] likelion-kdigital/semi-project-1 https://github.com/ijo0r98/likelion-kdigital/tree/main/semi-project-1

 

ijo0r98/likelion-kdigital

멋쟁이사자처럼 & K-Digital Training✏. Contribute to ijo0r98/likelion-kdigital development by creating an account on GitHub.

github.com

 


 

서울시에서 자전거타기에 가장 위험한 곳은?

 

필요한 라이브러리

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import folium
import json
import requests
from bs4 import BeautifulSoup 
from matplotlib import font_manager, rc 

# font
%matplotlib inline 
font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name() # 여백 X 한글 X
rc('font', family=font_name) # run configure

numpy  벡터, 행렬 등 수치 연산을 수행하는 선형대수 라이브러리

pandas  데이터 처리 및 분석 라이브러리로 행과 열로 이루어진 데이터 객체(DataFrame)를 만들어 다룰 수 있음

matplotib  데이터를 차트로 시각화

seaborn  matplotlib에 기반하여 제작된 파이썬 데이터 시각화 모듈

folium  지도 라이브러리

json  json데이터 처리 라이브러리

requests  http 요청 관련 라이브러리(웹 크롤링, 스크랩핑)

BeautifulSoup  HTML 문서 탐색에 유용한 라이브러리

 

 

 

문제 분석

1. 서울시 자전거 교통사고 통계 데이터 분석

https://data.seoul.go.kr/dataList/10783/S/2/datasetView.do

 

서울시 자전거 교통사고 통계

○ 통계개요
* 통계명 : 자전거 교통사고 현황
* 통계종류 : 서울시 자전거 교통사고현황을 제공하는 일반·보고통계
* 근거법령 :「도로교통법」제2조에 규정하는 도로에서 차의

data.seoul.go.kr

데이터 전처리

df_bic_acc = pd.read_excel('data/자전거교통사고현황.xlsx', encoding='utf-8', index_col='지역')

df_bic_acc.replace('-', 0, inplace=True) # '-' 0으로 치환
df_bic_acc.drop('합계', inplace=True) # 시각화를 위헤 합계 행 제거

df_bic_acc['합계']=df_bic_acc['피해자사고 발생건수'] + df_bic_acc['가해자사고 발생건수'] # 합계 열 추가

df_bic_acc

 

피해자사고 발생건수와 가해자사고 발생건수 차트 시각화

df_bic_acc_plt = df_bic_acc[['피해자사고 발생건수', '가해자사고 발생건수']]
df_bic_acc_plt.plot(kind='bar', figsize=(20, 15), fontsize=15, colormap='bwr').legend(fontsize = 20)

 

df_bic_acc_plt

 

 피해자 사고 발생건수가 가장 많은 곳 : 송파구 

 가해자 사고 발생건수가 가장 많은 곳 : 영등포구 

 


2. [인구 수 대비] 사고 발생건수

데이터 전처리

popul_df = pd.read_csv('data/pop_kor.csv', encoding='UTF-8', index_col='구별')

popul_df

발생건수 열만 추출한 데이터프레임

df_bic_add_plt

 

두 데이터프레임 JOIN

df_bic_acc_plt_ratio = df_bic_acc_plt.join(popul_df)

df_bic_acc_plt_ratio

 

사고 건수 정규화

# 최대값으로 나눔
weight_col = df_bic_acc_plt_ratio.max()
df_bic_acc_norm = df_bic_acc_plt_ratio / weight_col

# 인구 수 대비 비율 계산
df_bic_acc_norm = df_bic_acc_norm.div(df_bic_acc_norm['인구수'] , axis=0 ) * 100000 

사고 합계 열 추가

df_bic_acc_norm['합계'] = df_bic_acc_norm['피해자사고 발생건수'] + df_bic_acc_norm['가해자사고 발생건수']

합계 기준 오름차순 정렬

df_bic_acc_norm.sort_values(by='합계', ascending=False).head()

df_bic_acc_norm

 

인구 수 대비 자전거 사고 발생건수(합계) 시각화

df_bic_acc_norm['합계'].plot(kind='bar', figsize=(20, 15), fontsize=20, color='limegreen').legend(fontsize = 20)

df_bic_acc_norm

 

 인구 수 대비 자전서 사고 발생건수가 가장 많은 곳은 영등포구와 송파구 

728x90

관련글 더보기

댓글 영역