2005~2020 年各城市总碳排放、人均碳排放、各领域碳排放、常住人口、地区生产总值等指标

中国城市温室气体工作组在其官网上公布了 2005、2010、2015 和 2020 四个年份的中国各城市 CO2 总排放数据,为了方便大家使用,这里分享一下这个数据的整理和绘图方法。

除了 CO2 总排放数据,该数据集还包含各领域的碳排放、常住人口、GDP 等指标:

常住人口_万人、GDP_亿元、人均GDP_万元、农业、服务业、工业能源、工业过程、工业、城镇生活、农村生活、生活、道路、铁路、水运、航空、交通、能源、间接排放、直接排放、总排放、人均排放吨每人、单位总GDP二氧化碳排放、非化石能源占比

首先我们从网站上下载四个年份的数据并重命名为:2005.xlsx、2010.xlsx、2015.xlsx 和 2020.xlsx。

每个文件均包含二氧化碳排放数据和社会经济数据两个数据 sheet:

循环处理 CO2 排放 sheet:

clear all
cd "/Users/ac/Desktop/中国城市CO2排放数据集/"
foreach y in 2005 2010 2015 2020 {
import excel using "`y'.xlsx", first sheet("二氧化碳排放(万吨)") clear
gen 年份 = `y'
save `y', replace
}

*- 合并
use 2005, clear
append using 2010
append using 2015
append using 2020

*- 重命名
ren 省份Province 省份
ren 城市名称City 城市
drop C
ren 农业Agriculture 农业
ren 服务业Service 服务业
ren 工业能源Industrialenergy 工业能源
ren 工业过程Industrialprocesses 工业过程
ren 工业Industrialtotal 工业
ren 城镇生活Urbanhousehold 城镇生活
ren 农村生活Ruralhousehold 农村生活
ren 生活Household 生活
ren 道路Road 道路
ren 铁路Railway 铁路
ren 水运Waterbornenavigation 水运
ren 航空Aviation 航空
ren 交通Transport 交通
ren 能源Energy 能源
ren 间接排放Indirect 间接排放
ren 直接排放Direct 直接排放
ren 总排放Total 总排放
ren 人均排放吨人Percapitaemissions 人均排放吨每人
ren 单位总GDP二氧化碳排放CO2emissionsperG 单位总GDP二氧化碳排放_吨每万元
ren 非化石能源占比Nonfossilenergy 非化石能源占比

order 年份
save CO2排放数据集, replace

循环处理社会经济数据并和刚刚的数据合并:

*- 社会经济数据
foreach y in 2005 2010 2015 2020 {
import excel using "`y'.xlsx", first sheet("社会经济数据") clear
gen 年份 = `y'
save `y', replace
}

use 2005, clear
append using 2010
append using 2015
append using 2020
ren 省份Province 省份
ren 城市名称NameofCities 城市
drop 城市英文名称NameofCities
ren 常住人口万人Permanentpopulation104 常住人口_万人
ren GDP亿元GrossDomesticProduct10 GDP_亿元
ren 人均GDP万元GDPpercapita104RMB 人均GDP_万元
drop G - L
order 年份
merge 1:1 年份 省份 城市 using CO2排放数据集
drop _m
label data "数据处理:微信公众号 RStata"
save "2005~2020年中国各城市CO2排放与社会经济指标数据", replace

删除无用的中间数据:

*- 删除中间数据
cap erase 2005.dta
cap erase 2010.dta
cap erase 2015.dta
cap erase 2020.dta
cap erase CO2排放数据集.dta

为了方便大家使用,下面再给这个数据添加省市区县行政区划代码:

首先根据 2020cityco2map_db.dta 文件提取省份区划代码列表和城市区划代码列表。这个文件是我特意为下面的地图绘制设计的地理数据:

use 2020cityco2map_db.dta, clear
keep 省 - 市代码
duplicates drop _all, force
keep 省*
duplicates drop 省, force
gen z = substr(省, 1, 6)
save provlist, replace

use 2020cityco2map_db.dta, clear
keep 省 - 市代码
duplicates drop _all, force
gen z = substr(市, 1, 6)
duplicates report 省 z
save citylist, replace

然后依次匹配上省份和城市的区划代码:

use "2005~2020年中国各城市CO2排放与社会经济指标数据", clear

*- 省份匹配使用每个省的前两个字:
gen z = substr(省, 1, 6)
merge m:1 z using provlist
drop if _m == 2
drop z _m 省份
order 年份 省*
gen z = substr(城市, 1, 6)
merge m:1 省 省代码 z using citylist
drop if _m == 2

order 年份 省* 市*
drop z _merge
destring 市代码, replace
drop 城市
save "2005~2020年中国各城市CO2排放与社会经济指标数据(带行政区划代码)", replace

cap erase "2005~2020年中国各城市CO2排放与社会经济指标数据.dta"
cap erase citylist.dta
cap erase provlist.dta

这样我们就处理好了这份数据。

附件中我准备一份 Stata 绘制市级地图的数据,是为这份数据特意设计的,例如绘制各城市 CO2 总排放:

clear all
cd "/Users/ac/Desktop/中国城市CO2排放数据集/CO2排放城市地图数据/"

use "2005~2020年中国各城市CO2排放与社会经济指标数据(带行政区划代码).dta", clear
tostring 市代码, replace
replace 市代码 = "" if 市代码 == "."
merge m:1 省 省代码 市 市代码 using 2020cityco2map_db.dta

replace 总排放 = -1 if missing(总排放)
nicecut 总排放, n(8) unit("万吨") format(%6.0f)
grmap 总排放 if 年份 == 2020 | missing(年份) using ///
2020cityco2map_coord.dta, ///
id(ID) osize(vvthin ...) ocolor(white ...) ///
clmethod(custom) clbreaks(`r(cutpoints)') ///
fcolor(gray "255 255 229" "247 252 185" "217 240 163" "173 221 142" "120 198 121" "65 171 93" "35 132 67" "0 90 50") ///
leg(order(`r(legorder)')) ///
graphr(margin(medium)) ///
line(data(2020cityco2map_line_coord3.dta) by(group) ///
select(drop if inlist(group, 4, 7)) ///
size(vvthin *1 *0.5 *0.5 *0.5) pattern(solid ...) ///
color(white /// 市界颜色
black /// 国界线颜色
"0 85 170" /// 海岸线颜色
black /// 小地图框格颜色
black /// 比例尺和指北针颜色
)) ///
polygon(data(polygon3) fcolor(black) ///
osize(vvthin)) ///
label(data(2020cityco2map_label3) x(X) y(Y) ///
label(cname) length(20) size(*0.6) ///
select(keep if inlist(cname, "1000km", "N"))) ///
ti("2020 年中国各城市总碳排放分布") ///
subti("绘制:微信公众号 RStata") ///
caption("数据来源:中国城市温室气体工作组", size(*0.7))
gr export pic1.png, replace width(4800)

比较历年的 CO2 排放量:

这里我是使用 grc1leg 命令(类似 graph combine,不过可以自动合并图例)直接合并四个地图,不过感觉效果不好,实际使用中还是建议大家使用 PPT 等工具后期拼图。

该数据里面还有常住人口和地区生产总值数据:

除了 CO2 总排放量,该数据里面还有各个领域的碳排放量,例如农业和工业的:

点击这里跳转到 RStata 短书平台获取附件:2005~2020 年各城市总碳排放、人均碳排放、各领域碳排放、常住人口、地区生产总值等指标

评论