반응형
2021년 교통사고 데이터를 분석
과제 발표 이후 직접 2021년 교통사고 데이터를 분석해주시면서 피드백 해주심.
라이브러리 임포트
import pandas as pd
import plotly.express as px
데이터 준비하기
df = pd.read_csv('/content/도로교통공단_사망 교통사고 정보_20211231.csv', encoding='euc-kr')
df.head()
df.info()
교통사고 데이터 전처리
- 패턴화 시켜서 데이터를 자르고 붙이는 연습이 중요함.
date_split = df['발생년월일시'].str.split(' ')
time_split = date_split.str.get(1)
- 1) 발생년월일시 → 공백을 기준으로 자르고, 시간을 다시 : 을 기준으로 잘라서 발생시간 컬럼에 넣기
df['발생시간'] = time_split.str.split(':').str.get(0)
# df['발생시간'] = date_split.str.get(1).str.split(':').str.get(0)
- 2) 발생시간 데이터 타입 변경
df = df.astype({'발생시간':'int64'})
df.info()
- 3) 발생년월일 컬럼 새로 만들어서 데이터(datetime 형태로) 넣기
df['발생년월일'] = pd.to_datetime(date_split.str.get(0), format='%Y-%m-%d', errors='raise')
df.head()
- 4) 필요없는 컬럼 삭제 → 발생년월일시
del df['발생년월일시']
df.head()
- 5) 전처리 한 데이터셋 저장
df.to_csv('2021년 사망교통사고 현황_2022.08.31.csv', encoding='utf-8-sig', index=False)
데이터 분석
df['발생지시도'].value_counts()
- top 5를 뽑아보자. 특정 데이터를 뽑는 것은 다른 처리를 해줘야 가능한거지만, index를 활용해서 슬라이싱한 후 몇번째까지 이런걸 뽑아볼 수는 있다.
df['발생지시도'].value_counts().index[:5]
df['요일'].value_counts()
# 사망자수 + 부상자 => 사고에서 발생된 전체 인원
df['전체인원'] = df['사망자수'] + df['부상자수']
df.head()
df.groupby(['발생지시도'])['사망자수'].sum().sort_values(ascending=False)
group_df = df.groupby(['발생지시도'])[['사망자수', '부상자수', '전체인원']].sum().sort_values(by='사망자수', ascending=False)
# sort_values 그냥 쓰면 정렬하는 기준이 뭔지 몰라서 에러남때문에 by라는 argument를 통해서 기준이 될 열을 지정해준다.
group_df
group_df.info()
# 이 경우, index를 기준으로 info가 출력되는 것이 아니라, 기준이 되는 값을이 출력된다.
group_df.T
한글 깨짐 방지
import matplotlib as mpl
import matplotlib.pyplot as plt
%config InlineBackend.figure_format = 'retina'
!apt -qq -y install fonts-nanum
import matplotlib.font_manager as fm
fontpath = '/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf'
font = fm.FontProperties(fname=fontpath, size=9)
plt.rc('font', family='NanumBarunGothic')
mpl.font_manager._rebuild()
그래프를 시각화해보자
group_df.T.plot()
import matplotlib.pyplot as plt
plt.style.use('ggplot')
group_df.T.plot.bar()
plt.show()
plt.style.use('ggplot')
group_df.T.plot.barh()
plt.show()
LIST
'대외활동 > ABC 지역주도형 청년 취업역량강화 ESG 지원산업' 카테고리의 다른 글
[ABC 220831 - 12일차] PANDAS를 활용한 인구 구조 분석 (0) | 2022.09.02 |
---|---|
[ABC 220831 - 12일차] 어울링 크롤링 (0) | 2022.09.02 |
[ABC 220830 - 11일차] 과제 (0) | 2022.09.02 |
[ABC 220831 - 11일차] 4번째 특강 (0) | 2022.08.31 |
[ABC 220831 - 11일차] 웹 크롤링 (0) | 2022.08.31 |