상세 컨텐츠

본문 제목

[K-DIGITAL] 세미프로젝트1. 서울시 자전거사고 분석(4) 추가, 수정

PYTHON/K-DIGITAL

by ranlan 2021. 6. 22. 23:24

본문

728x90

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

 

 

[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


 

 

시각화 자료 추가

1) 사고 발생건수 시각화 그래프 유형 stacked

df_bic_acc_plt.plot(kind="bar", stacked=True, figsize=(20, 15), fontsize=15, colormap='bwr')

 

 

2) 인구 수 대비 교통사고 발생 수 지도 시각화

이전에는 [인구 수 대비 자전거 도로 수 데이터]로 인구 팝업과 색상이 표시된 지도 시각화를 하였으나 인구 수에 비례하여 교통사고 발생 수를 보여주는 것이 더 중요하다고 생각되어 이전의 지도 시각화는 삭제하고 새로 추가

 

구별 중심좌표 데이터

gu_geo = pd.read_excel('data/구별위도경도.xlsx', encoding='UTF-8')
gu_geo.head()

gu_geo

지도 시각화

import folium
from folium.features import DivIcon

lat = ""
lng = ""

for i in range(25):
    #tmpMap = gmaps.geocode(name)
    #tmpLoc = tmpMap[0].get('geometry')
    name = gu_geo['구별'][i]
    lat = gu_geo['lat'][i]
    lng = gu_geo['lng'][i]
    text = name
    
    # 구별 텍스트 마커추가
    folium.map.Marker(
        [lat, lng],
        icon=DivIcon(
            icon_size=(100,50),
            icon_anchor=(15,0),
            html='<div style="font-size: 10pt">%s</div>' %text,
            )
        ).add_to(map_acc)
    
    # 인구수 팝업
    folium.Marker([lat, lng],
              popup='인구수: '+str(popul_df['인구수'][i])+'명',
              icon=folium.Icon(color='red', icon='glyphicon-user')    
              ).add_to(map_acc)

map_acc

 인구 수 대비 여전히 영등포구와 송파구의 사고 발생비율이 가장 높음을 알 수있음 

 

 

 

3) 자전거 도로 종류별 수 그래프 추가

구 별 전체 자전거 도로 수와 각각의 도로 종류별로 얼마나 차지하는지 보여주기에 효율적이라 생각되어 추가

road_list = ['자전거전용도로 구간', '자전거보행자겸용도로 구간', '자전거전용차로 구간', '자전거우선도로 구간']

df_bic_road_csv[road_list].plot(kind="bar", stacked=True, figsize=(20, 15), fontsize=15, colormap='Set3').legend(fontsize = 20)

 

 

4) 서울시내 전체 자전거도로 중 각각의 자전거 도로 종류가 차지하는 비율 그래프 추가

도로별 수 합계 행 추가

df_bic_road_csv.loc['합계'] = (df_bic_road_csv.sum(axis=0).values)

df_bic_road_csv

df_bic_road_csv.loc['합계', road_list].plot(kind='pie', figsize=(15, 10), fontsize=13, colormap='Set3',  autopct='%.1f%%')

 

 

5) 자전거 사고 발생에 영향을 미치는 요인(인구 수, 대여 건수, 자전거도로 수)과 사고 발생 수 data scaling

데이터 전처리

def reRange(x, oldMin, oldMax, newMin, newMax):
    return (x - oldMin) * (newMax - newMin) / (oldMax - oldMin) + newMin

# 필요한 열 선택
df_heatmap = df_road_corr[['도로 수', '인구 수', '대여 건수', '사고 수']]

# 점수 열 추가
for col in df_heatmap.columns:
    new_col = col + ' 점수'
    df_heatmap[new_col] = reRange(df_heatmap[col], min(df_heatmap[col]), max(df_heatmap[col]), 1, 100)

히트맵

df_heatmap.sort_values(by='사고 수 점수', ascending=False, inplace=True)
sns.heatmap(df_heatmap[['도로 수 점수', '인구 수 점수', '대여 건수 점수', '사고 수 점수']], cmap='PuRd', fmt='f', annot=True)
plt.title('각 요인별 점수 및 사고 발생 수 시각화')

 

 

 

자료 해석부분 검증 및 수정

 

 [이전의 원인 예측] 

 

1. 자전거 사고 발생수가 가장 높은 송파구와 영등포구의 자전거 대여 건수와 자전거 도로 수가 높은 편으로 나타남

   → 자전거 사고 발생 수는 자전거 도로 수, 자전거 이용률과 상관관계가 있을 것이다.

 

2. 송파구와 영등포구의 경우 자전거 우선도로와 자전거 전용차로의 비율이 가장 높음

   → 자전거 사고 발생에 대해 자전거 우선도로와 자전거 전용차로의 연관이 가장 높을 것이다.

   → 자전거 이용률과 도로가 많은 것에 비해 자전거 전용도로의 비율이 적어 안전한 자전거 도로상황이 아니기 때문일 것이다.

 

 

 [검증 및 수정] 

 

1. 검정 결과 인구 수, 자전거 도로 수, 공공자전거 대여 건수 모두 자전거 교통사고 발생 수와 통계적으로 유의미한 상관관계가 있다.

    그 중 인구 수의 상관계수가 가장 낮고(0.58) 자전거 도로 수가 가장 높다.(0.75)

 

2. 자전거보행자겸용도로자전거전용도로와의 연관이 가장 높다.

    자전거 전용차로와 우선도로의 경우 p-value가 0.05 초과로 귀무가설에 의해 유의미한 상관관계가 없을 확률이 높다.

    그에 반해 자전거보행자겸용도로와 자전거전용도로는 p-value 0.05 미만으로 유의미한 상관관계가 있을 확률이 높다.

   따라서 자전거 보행자겸용도로와 자전거전용도로가 자전거 교통사고에 미치는 영향이 더 크다고 볼 수 있다.

 

 

728x90

관련글 더보기

댓글 영역