-
[Environmental Data Analysis] - 2011년 ~ 2020년 전국 산불 통계 데이터 분석 With PythonData Analysis/Environment 2021. 6. 7. 16:22
넷플릭스로 연달아 몇 편의 다큐멘터리를 볼 정도로 현재 나는 환경 이슈에 굉장히 몰두해있다. 현재 환경 보호를 위해 딱히 하고 있는 특별한 행동들은 없지만 환경 이슈에 대해 잘 알고 있는 것만 하더라도 충분히 환경 문제 해결에 도움이 된다고 생각한다. 오늘 포스팅에서 다룰 주제는 바로 산불이다.
호주, 캘리포니아, 강원도 양양에서 일어난 대규모 산불은 대규모 인명 피해를 가져올 만큼 인류에게 엄청난 재앙으로 다가오고 있다. 산불은 번개 등으로 인한 자연 발화 혹은 사람의 부주의 등으로 인해 발생하는 인재라고 알고 있었지만 요즘 들어 전 세계적으로 산불이 부쩍 잦아진 가장 큰 이유로 과학자들은 ‘기후변화’를 꼽고 있다.
기온이 상승하게 되면 겨울철 산에 있는 눈이 금방 녹아버리는 바람에 산이 건조해져 땅의 습기가 적어지게 되며, 또한 봄과 여름은 더욱 따뜻해져 그나마 남아 있던 습기가 공기 중으로 더 빨리 증발하게 된다. 조그마한 산불이 대형 산불이 되는 경우가 잦은 이유가 바로 여기서 찾을 수 있다. 또한 기후변화로 뭄과 병충해 등으로 고사목이 증가하는 것도 산불의 직접적인 원인이 될 수 있는데, 죽은 나무는 바짝 말라서 산불을 키우는 장작이 되기 때문이다.
기후변화로 인해 과거엔 한철에만 발생하던 산불이 이제는 연중 재해가 되고 있다. 이로 인해 전 세계적으로 산불 주의기간이 크게 길어지고 있는 추세이고, 온실가스를 감축하지 않을 경우 앞으로도 산불은 더 자주 발생할 가능성이 높다고 한다.
아래 내가 분석한 데이터를 통해서 우리나라의 산불 현황은 어떤지 한번 보고, 경각심을 가졌으면 한다. 데이터는 공공데이터 API에서 추출했다.
https://data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=3070842
0. 산불 데이터 가져오기
코드가 문제없다면 아래와 같이 산불 관련된 데이터를 확인할 수 있다. 여기에는 산불 발생 날짜 시간, 지역, 원인, 피해 면적까지 다 잘 정리가 되어 있다.
from urllib.request import urlopen from urllib.parse import urlencode, unquote, quote_plus import urllib import requests import pandas as pd import xmltodict import json from datetime import datetime as dt import requests data=[] for i in range(2011, 2021): key='~~' url=f'http://apis.data.go.kr/1400000/forestStusService/getfirestatsservice?serviceKey={key}&' queryParams =urlencode({quote_plus('pageNo') : '1',quote_plus('numOfRows') : '9999', quote_plus('searchStDt') : f'{i}0101',quote_plus('searchEdDt') : f'{i}1231'}) url2=url+queryParams response = urlopen(url2) results = response.read().decode("utf-8") results_to_json = xmltodict.parse(results) d = json.loads(json.dumps(results_to_json)) data.extend(d['response']['body']['items']['item']) df=pd.DataFrame(data) si_do={'강원':'Gangwon-do','경기':'Gyeonggi-do', '경남':'Gyeongsangnam-do','경북':'Gyeongsangbuk-do', '광주':'Gwangju','대구':'Daegu','대전':'Daejeon','부산':'Busan', '서울':'Seoul','세종':'Sejongsi','울산':'Ulsan','인천':'Incheon', '전남':'Jeollanam-do','전북':'Jeollabuk-do','제주':'Jeju-do','충남':'Chungcheongnam-do', '충북':'Chungcheongbuk-do'} df['eng_region']=df['locsi'].apply(lambda x: si_do[x])
1. 2011년 ~ 2020년 국내 산불 발생 횟수 & 총 피해 면적
19년 대비해서는 20년 산불 횟수나 피해 면적 모두 감소하기는 했지만 10년 전 데이터와 비교해서는 최근 5년간 산불 피해가 엄청났다는 점을 확인할 수 있다. 2011년 대비 산불 횟수는 2.5배, 피해 면적은 약 3배 가까이 증가했다.
import plotly.graph_objects as go from plotly.subplots import make_subplots year_count=pd.DataFrame(df.groupby(['startyear']).count()['firecause']) year_count.columns=['firecounts'] df['damagearea']=df['damagearea'].astype(float) year_sum=pd.DataFrame(df.groupby(['startyear']).sum()['damagearea']) fig = make_subplots(specs=[[{"secondary_y": True}]]) fig.add_trace( go.Bar(x=year_count.index, y=year_count['firecounts'], name="Number of Forests Fire"), secondary_y=False, ) fig.add_trace( go.Line(x=year_count.index, y=year_sum['damagearea'], name="Damged Area(ha)"), secondary_y=True, ) fig.update_xaxes(title_text="Year") fig.show() fig.to_json()
2. 2011년 vs 2020년 국내 산불 발생 횟수 & 총 피해 면적 비교
위에서 내가 산불은 이제 연중 재난이 되었다고 얘기했는데 실제로 데이터 상으로도 그런지 2011년과 2020년 월별 산불 데이터를 비교해봤다.
3월, 4월 산불 피크 시즌 기간에는 11년 대비 무려 2배 이상 증가했고, 10월 ~ 12월 기간에는 무려 9배 이상 폭증한 점을 볼 수 있다. 심지어 초여름 시즌 5월과 6월에 산불 횟수는 4배 이상 증가했다.
국내도 산불이 이제는 연중 내내 일어나는 재난이다.
import plotly.graph_objects as go df_2011=df[df['startyear']=='2011'] df_2011_counts=pd.DataFrame(df_2011.groupby(['startmonth']).count()['firecause']) df_2020=df[df['startyear']=='2020'] df_2020_counts=pd.DataFrame(df_2020.groupby(['startmonth']).count()['firecause']) fig = go.Figure(data=[ go.Bar(name='2011', x=df_2011_counts.index, y=df_2011_counts['firecause']), go.Bar(name='2020', x=df_2020_counts.index, y=df_2020_counts['firecause']) ]) # Change the bar mode fig.update_layout(barmode='group',title='2011 vs 2020 Number of Forest Fire by Month') fig.show()
3. 2011년 ~ 2020년 국내 행정구역별 산불 현황 분석
다음으로 지역별 산불 데이터를 비교 분석하도록 하겠다.
산불 횟수 기준으로는 경기도의 증가 폭이 두드러진다. 다음으로는 경북, 강원도, 경남 등 산간 지역이 많은 구역에서 산불 횟수가 가장 많이 일어나고 있는 상황이다.
import plotly.express as px year_local_counts=pd.DataFrame(df.groupby(['startyear','eng_region']).count()['firecause']) year_local_counts=year_local_counts.reset_index() year_local_counts.columns=['year','region','counts'] fig = px.line(year_local_counts, x="year", y="counts", color="region", line_group="region", hover_name="region") fig.show() fig.to_json()
피해 면적 기준에서는 역시나 19년에 일어난 강원도 고성 산불로 인해 강원도 피해 면적이 가장 넓게 나타났다. 특이한 점은 울산이 강원, 경북에 이어서 20년 산불 피해가 가장 많은 지역으로 나타났다.
year_local_sum=pd.DataFrame(df.groupby(['startyear','eng_region']).sum()['damagearea']) year_local_sum=year_local_sum.reset_index() year_local_sum.columns=['year','region','damagedarea'] fig = px.line(year_local_sum, x="year", y="damagedarea", color="region", line_group="region", hover_name="region") fig.show() fig.to_json()
4. 2011년 ~ 2020년 행정구역별 면적 대비 총 산불 피해 면적
다음으로는 행정구역 총면적 대비해서 지난 10년간 얼마나 산불로 인해 피해를 받았는지 비중을 한번 구해봤다.
총면적 대비 가장 큰 피해를 많이 받은 지역은 울산, 강원도, 부산 순으로 나타났다.
'Data Analysis > Environment' 카테고리의 다른 글
[Environmental Data Analysis] 세계 기온 변화 데이터 분석 & 시각화 with Python (2) 2021.06.11 [Environmental Data Analysis] 2000년 ~ 2020년 국내 시도별 기온 변화 트렌드 분석 with Python (1) 2021.06.10 2015년 ~ 2020년 국내 태양광 에너지 생산량 분석 With 파이썬 (0) 2021.06.06 한국지형/포유류 분포도 3d 웹맵 Qgis &Qgisthreejs.js (0) 2021.03.17 전국 시도별 신재생 에너지(태양광, 풍력, 수력) 데이터 분석 with Python (0) 2021.03.14