Python Code
import pandas as pd
# 1인당 가정생활폐기물(연간) 발생 현황
df=pd.read_csv('/18년 가정생활폐기물 데이터.csv',encoding='cp949',)
df.rename(columns={'T10 주민1인당 생활폐기물배출량<br>(A÷B) (14STD02441 kg/일)':'Household Waste per person(kg/day)',
'T001 생활폐기물발생량<br>(A) (14STD06543 톤/일)':'Household Waste(ton/day)',
'T002 주민등록인구<br>(B) (14STD04547 명)':'Population',
'행정구역별':'region','시점':'year'},inplace=True)
df=df[df['region']!='전국']
sido=['서울특별시','인천광역시','경기도','강원도','충청남도','충청북도','전라북도','전라남도',
'대전광역시','광주광역시','울산광역시','경상북도','경상남도','대구광역시','부산광역시','세종특별자치시','제주특별자치도']
df['sigun']=df['region'].apply(lambda x: 'x' if x in sido else 'o')
df_sido=df[df['sigun']=='x']
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_sido['eng_region']=df_sido['region'].apply(lambda x: si_do[x] )
import plotly.express as px
line = px.line(df_sido, x="year", y="Household Waste per person(kg/day)", color="eng_region")
al=line.to_json()
for x,y in zip(list(si_do.keys()), list(si_do.values())):
al = al.replace(y, x)
df_sido['Household Waste(ton/day)']=df_sido['Household Waste(ton/day)'].astype(float)
total=pd.DataFrame(df_sido.groupby(['region','eng_region']).sum()['Household Waste(ton/day)'])
total['perc']=total['Household Waste(ton/day)'].apply(lambda x: float(x)/total['Household Waste(ton/day)'].sum())
total=total.reset_index()
pie = px.pie(total, values='perc', names='eng_region', title='Household waste per province')
pie.show()
pj=pie.to_json()
for x,y in zip(list(si_do.keys()), list(si_do.values())):
pj = pj.replace(y, x)
import plotly.graph_objects as go
hm = go.Figure(data=go.Heatmap(
z=df_sido['Household Waste(ton/day)'],
x=df_sido['year'],
y=df_sido['eng_region'],
hoverongaps = False,))
hm.show()
hj=hm.to_json()
for x,y in zip(list(si_do.keys()), list(si_do.values())):
hj = hj.replace(y, x)
from urllib.request import urlopen
import json
with urlopen('https://raw.githubusercontent.com/southkorea/southkorea-maps/master/kostat/2018/json/skorea-provinces-2018-geo.json') as response:
kor = json.load(response)
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']
total['eng']=si_do
total['총 가정 생활폐기물(천톤/일)']=total['Household Waste(ton/day)']/1000
for idx, si in enumerate(kor['features']):
name=si['properties']['name']
nvm=total.loc[(total.region==name),'총 가정 생활폐기물(천톤/일)'].iloc[0]
kor['features'][idx]['properties']['총 가정 생활폐기물(천톤/일)']=int(nvm)
import mapboxgl
from mapboxgl.viz import *
import os
from mapboxgl.utils import create_color_stops
from mapboxgl.utils import create_numeric_stops
api='~~'
center =[126.986, 37.565]
color_breaks = [20,40,60,80,100,120]
color_stops =create_color_stops(color_breaks,colors='YlGnBu')
viz =ChoroplethViz(
access_token=api,
data=kor,
color_property='총 가정 생활폐기물(천톤/일)',
color_stops=color_stops,
center=center,
zoom=5.7,
bearing=-11,
pitch=43,
height_property='총 가정 생활폐기물(천톤/일)',
height_stops=create_numeric_stops(color_breaks,0,10),
height_function_type='interpolate'
)
viz.show()
viz.create_html('waste.html')