[python]pandas 졸음운전 데이터 분석 연습문제

eunhye_·2022년 6월 21일
0

Python

목록 보기
3/9
post-thumbnail

모듈 import

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
from datetime import datetime 

자료 불러오기

#python 파일 경로에 data폴더 만든 후 다음의 파일들 넣어놓기
#데이터 불러오기 (pd.read_csv)
df_2016 = pd.read_csv('data/2016년_졸음운전_교통사고.csv',encoding='cp949')
df_2015 = pd.read_csv('data/2015년_졸음운전_교통사고.csv',encoding='cp949')
df_2014 = pd.read_csv('data/2014년_졸음운전_교통사고.csv',encoding='cp949')

df_2016.shape, df_2015.shape, df_2014.shape

예제 풀어보기

#1. 3개의 데이터를 병합하시오
df = pd.concat([df_2016,df_2015,df_2014])
# 데이터 구조 파악하기
#df.shape
#df.head()
#df.info()
#df.columns

#2. 년도, 월별로 인덱스를 설정(멀티인덱스) 하고 데이터를 보여 주시오
# index 설정
#df.set_index('구분', inplace=True)

# index에서 추출 컬럼 생성 df['년도'], df['월']
year=[]
for i in range(0,36):
    year.append(df.index[i][:4])
month = []
for i in range(0,36):
    month.append(df.index[i][5:-1])
    #print(df.index[i][5:-1])
df['년도'] = year
df['월']= month
df.set_index([df['년도'],df['월']], inplace=True)

# 다른 풀이 datetime 사용
data1 = pd.to_datetime(df['구분'], format ='%Y년%m월') # dt사용하여 '년도', '월' 추출

# column drop(['제거할 컬럼명'])
df.drop(['년도','월'], axis=1, inplace=True)
df.head()

#4.  2016년 사고대비 사망율을 구하시오
# 사고 대비 사망율 = 사망건수/사고건수 *100
accident = df.loc['2016']['사고(건)'].sum()
#df.loc[]에서 ''는 index의 type이 문자열이기 때문에
death = df.loc['2016']['사망(명)'].sum()
deathpercentage_2016= round((death/accident ) * 100,2)

#5. 2014년도 월별 사망, 부상 데이터를 바차트로 보여주시오
df.loc['2014'][['사망(명)','부상(명)']].plot(kind='bar', figsize=(10,6))
plt.show()

#6. 2015년 대비  사망이 가장 많이 증가한 2016년도 월을 구하시오
#DataFrame.nlargest(target value 개수, keep='all or first')
(df.loc['2016']['사망(명)']- df.loc['2015']['사망(명)']).nlargest(1,keep='all')

# 파일로 저장하기
df.to_csv('data/filename.csv')

아래의 사이트를 참고하였습니다.
https://makeit.tistory.com/116

👀 memo

idxmax()는 한개의 idx를 반환하는데에 비해 nlargest()는
max값의 모든 index 반환 가능하다.

코드의 오류나 수정사항은 댓글로 남겨주시면 감사하겠습니다.😊

0개의 댓글