안녕하세요.
태풍 '미탁'이 한반도를 휩쓸었어요.
피해보신 분들, 하루 빨리 복구되길 진심으로 바랄게요.
이번주는 자연재해 관련 데이터를 분석해보려고 해요.
1. DataSet 구하기
국가통계포털 > 주제별통계 > 사회 > 자연재해현황
①시도별 재해현황
②시도별 피해복구액
2015~2017년의 데이터가 수집돼있어요.
최신데이터를 사용하기 위해
'시점' 탭에서 2017년만 선택한 후, 다운로드했어요.
2. 데이터 전처리
import pandas as pd
def data_preprocessing(path) :
# 1. 인덱스 처리
data = pd.read_excel(path, index_col = 0)
# 2. 합계 행 제거
data = data.drop('합계')
# 3. 데이터 스케일 축소
data['2017'] = data['2017']*0.001
return data
num_data = data_preprocessing('시도별_피해현황_20191003172502.xlsx')
amount_data = data_preprocessing('시도별_피해복구액_20191003172524.xlsx')
① 지역명 index 처리
데이터 정리를 위해
지역명을 인덱스로 만들었어요.
read_excel() 함수의 index_col 옵션을 사용했습니다.
index_col = '인덱스 컬럼 번호'
② '합계' 행 제거
개별 시/도의 데이터를 사용할 것이기 때문에
합계 행은 지워주었습니다.
drop() 함수를 사용했어요.
drop('행 이름')
cf. 열을 지우고 싶다면?
drop(['열 이름'], axis = 1)
③ 값 스케일 축소
값의 크기가 크다보니 jupyter notebook에서 자
동으로 스케일을 줄여서(0.000001을 곱해주더라고요ㅜ)
그래프를 그리더라고요.
그러다보니 값을 직관적으로 파악하기 어려워서
jupyter notebook이 값을 줄이지 않도록
데이터에 0.001씩을 곱해주었습니다.
data['2017] = data['2017'] *0.001
3. 데이터 시각화
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
from matplotlib import style
style.use('ggplot')
%matplotlib inline
font_name = font_manager.FontProperties(fname='c:/Windows/Fonts/malgun.ttf').get_name()
rc('font', family=font_name)
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(10,6))
ax = plt.subplot()
# 1. x축 공유하도록 그래프 복사하기
ax2 = ax.twinx()
plt.title('시도별 자연재해 피해현황 및 피해복구액')
# 2. 막대그래프 그리기
ax.bar(num_data.index, num_data['2017'], label='피해액수(단위 : 백만원)')
ax2.plot(amount_data, label='피해복구액수(단위 : 백만원)', color ='green', marker="o")
ax.legend(loc='upper left')
ax2.legend(loc='upper right')
plt.show()
① x축 공유하도록 그래프 복사하기
피해현황과 피해액수 그래프를 한눈에 보여주기 위해서
x축을 공유하도록 그래프를 복사해줬습니다.
twinx() 함수를 사용했어요.
ax2 = ax.twinx()
cf. y축을 공유하는 그래프를 그리려면?
ax2 = ax.twiny()
② 막대 그래프 그리기
피해현황 그래프는 막대그래프로 그려주어
한눈에 알아보기 쉽도록 했어요.
bar()함수를 사용했습니다.
ax.bar(x값, y값, label='')
4. 결과 및 해석
① 지역별로 차이가 크며, 충북&경북의 피해가 도드라진다.
② 충북은 경북보다 피해액수는 작지만 피해복구액수는 거의 동일하다.
포스팅 봐주셔서 감사합니다.
다음주에는 Scatter 그래프를 그려볼게요!