-
[Environmental Data Analysis] 2000년 ~ 2020년 국내 시도별 기온 변화 트렌드 분석 with PythonData Analysis/Environment 2021. 6. 10. 16:46
이번 포스팅에서 다룰 주제는 바로 기온이다. 2000년부터 20년간 대한민국 시도별 평균 기온이 어떻게 변해왔는지 한번 알아보도록 하겠다. 데이터는 아래 국가통계포털 링크에서 확인할 수 있다.
1. 2000년 ~ 2020년 시도별 기온 변화 트렌드
우선 간단하게 Plotly를 사용해서 시도별 기온 트렌드를 시각화해보도록 하겠다.
그래프 상으로는 뚜렷하게 나타나고 있지는 않지만 확실히 거의 모든 지역에서 평균 기온이 증가한 부분을 확인할 수 있다.
import pandas as pd import plotly.express as px df=pd.read_csv('D:/Download/기온.csv',encoding='euc-kr') df.columns=['Region','Year','Avg.Temp'] 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','전국(평균)':'Average'} df['eng_region']=df['Region'].apply(lambda x: si_do[x]) fig = px.line(df, x="Year", y="Avg.Temp", color='eng_region') fig.show()
2. 시도별 기온 증가폭
위 그래프로는 명확하게 얼마나 많이 상승한 지 확인할 수 없어서, 2000년 대비 2020년 기온이 얼마나 올랐는지 그래프로 다시 만들어봤다.
대한민국 전체 평균 2000년 대비 2020년에 기온이 약 5.6% 증가한 것으로 나타났다. 기온이 가장 많이 증가한 지역으로는 대전, 충청남도, 강원도, 전라북도, 충청북도로 확인할 수 있으며 대구, 울산, 부산의 경우 상승폭이 평균 대비 절반 수준에 미치지 못할 정도로 낮다.
import plotly.graph_objects as go df_2000=df[df['Year']==2000] df_2020=df[df['Year']==2020] df_2000.set_index('Region',inplace=True) df_2020.set_index('Region',inplace=True) tb=pd.concat([df_2000,df_2020],axis=1) tb.columns=['Year','2000_temp','eng_region','Year2','2020_temp','eng_region2'] tb=tb.drop(['Year2','eng_region2'],axis=1) tb['temp_increase']=((tb['2020_temp']/tb['2000_temp'])-1)*100 tb=tb.sort_values(by='temp_increase',ascending=False) colors = ['lightslategray',] * len(tb) colors[tb['eng_region'].values.tolist().index('Average')] = 'crimson' fig = go.Figure(data=[go.Bar( x=tb['eng_region'], y=tb['temp_increase'], marker_color=colors, text=tb['temp_increase'] )]) fig.update_traces(texttemplate='%{text:.2f}%',textposition='outside',) fig.update_layout(title_text='Temperature Increase %') fig.show() fig.to_json()
기온이 1℃만 올라도 사망 위험률이 5% 정도 증가한다고 한다. 태풍/홍수와 같은 자연 재해 뿐만 아니라 기온 상승에 따른 식중독, 폭염, 전염병 등 질환이 늘어나기 때문이다. 우리 생명과도 직결되는 부분이기 때문에 기온은 환경문제에 있어 가장 중요한 부분이 아닐 수 없다.
마지막으로 대한민국 시도, 연도별 평균 기온을 아래와 같이 애니메이션으로 만들어봤다. 해당 부분은 파이썬 스터디용으로 만들어 본 것이니 참고만 하길 바란다.
import folium from folium import plugins from selenium import webdriver import time import imageio from PIL import Image import os from pathlib import Path for i in range(2000, 2021): geo_json='https://raw.githubusercontent.com/southkorea/southkorea-maps/master/kostat/2013/json/skorea_provinces_geo_simple.json' df_=df[df['Year']==i] m=folium.Map( location=[36.97884521132491, 127.86224884213675], tiles='Stamen Terrain', zoom_start=6.1 ) folium.Choropleth( geo_data=geo_json, name='choropleth', data=df_, columns=['eng_region','Avg.Temp'], key_on='feature.properties.name_eng', fill_color='YlOrRd', fill_opacity=0.7, line_opacity=0.2 ).add_to(m) title_html = ''' <h3 align="left" style="font-size:22px"><b>{}</b></h3> '''.format('Year: ' + str(i)) m.get_root().html.add_child(folium.Element(title_html)) m.save('C:/Users/IGAWorks_Wade/avg_temp_' + str(i) + '.html') for i in range(2000,2021): fn='avg_temp_' + str(i) + '.html' browser = webdriver.Chrome() browser.get(f'C:/Users/IGAWorks_Wade/{fn}') #Give the map tiles some time to load time.sleep(5) browser.save_screenshot('avg_temp_' + str(i) + '.png') browser.quit() for i in range(2000,2021): image = Image.open('avg_temp_' + str(i) + '.png') box = (0, 0, 800, 800) cropped_image = image.crop(box) cropped_image.save('kore_avg_temp_' + str(i) + '.png') image_path = Path() images = list(image_path.glob('*.png')) image_list = [] for file_name in images: print(file_name) image_list.append(imageio.imread(file_name)) os.remove(file_name) imageio.mimwrite('GifMap.gif', image_list, fps=2)
'Data Analysis > Environment' 카테고리의 다른 글
[Environment Data Analysis] - 1990년~2018년 세계 산림 면적 데이터 분석 & 시각화 with Python (0) 2021.06.12 [Environmental Data Analysis] 세계 기온 변화 데이터 분석 & 시각화 with Python (2) 2021.06.11 [Environmental Data Analysis] - 2011년 ~ 2020년 전국 산불 통계 데이터 분석 With Python (1) 2021.06.07 2015년 ~ 2020년 국내 태양광 에너지 생산량 분석 With 파이썬 (0) 2021.06.06 한국지형/포유류 분포도 3d 웹맵 Qgis &Qgisthreejs.js (0) 2021.03.17