100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > python分析人口出生率代码_【源码】国家统计局人口数据采集Python脚本数据汇总 | 州

python分析人口出生率代码_【源码】国家统计局人口数据采集Python脚本数据汇总 | 州

时间:2022-03-14 00:05:38

相关推荐

python分析人口出生率代码_【源码】国家统计局人口数据采集Python脚本数据汇总 | 州

在上一篇文章《“一胎化”35年,Python可视化初探中国人口变化》中,州的先生(微信号:taoist_ling,公众号:zmister)通过采集国家统计局“国家数据”网站中提供的中国历年人口数据,并对数据进行可视化的探索,发现了一些有意思和令人深思的现象和趋势。

有一些小伙伴后台留言希望公布一下采集“国家数据”网站人口数据的代码,在这里,就将总人口、人口出生率、人口年龄结构和人口平均寿命4项数据的代码公布出来,方便大家学习和使用。

涉及到的模块

在这里使用到的第三方库有requests,通过pip命令即可直接安装:

pip install requests

使用到的内置库有:

json:用于解析接口返回的数据;

csv:用于将数据写入到CSV文件中;

同时使用到的header请求头为:

headers = {

'Host':'data.',

'Connection':'keep-alive',

'Accept':'application/json, text/javascript, */*; q=0.01',

'X-Requested-With':'XMLHttpRequest',

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',

'Referer':'http://data./easyquery.htm?cn=C01',

'Accept-Encoding':'gzip, deflate',

'Accept-Language':'zh-CN,zh;q=0.9',

}

生成年份列表

# 获取年份列表

defget_year_list():

year_list = []

foriinrange(1949,):

year_list.append(str(i))

returnyear_list

总人口

总人口数据中包含年份、总人口、男性人口、女性人口、城镇人口、乡村人口5项,保存为总人口.csv文件:

# 总人口

defget_total_population():

year_list = get_year_list()

withopen('总人口.csv','a+', encoding='utf-8', newline='')asfiles:

fieldnames = ['年份','年末总人口(万人)','男性人口(万人)','女性人口(万人)','城镇人口(万人)','乡村人口(万人)']

writer = csv.DictWriter(files, fieldnames=fieldnames)

writer.writeheader()

foryearinyear_list:

url ='http://data./easyquery.htm?m=QueryData&dbcode=hgnd&rowcode=zb&colcode=sj&wds=%5B%5D&dfwds=%5B%7B%22wdcode%22%3A%22sj%22%2C%22valuecode%22%3A%22{year}%22%7D%5D'.format(

year=year)

wbdata = requests.get(url, headers=headers)

jsdata = json.loads(wbdata.text)

data = jsdata['returndata']['datanodes']

item = {

'年份': year +'年',

'年末总人口(万人)': data[0]['data']['data'],# 年末总人口(万人)

'男性人口(万人)': data[1]['data']['data'],# 男性人口(万人)

'女性人口(万人)': data[2]['data']['data'],# 女性人口(万人)

'城镇人口(万人)': data[3]['data']['data'],# 城镇人口(万人)

'乡村人口(万人)': data[4]['data']['data'],# 乡村人口(万人)

}

print(item)

writer.writerow(item)

人口出生率、死亡率和自然增长率

包含年份、出生率、死亡率、自然增长率4项数据,数据保存为出生死亡及自然增长率.csv文件:

# 人口出生率、死亡率和自然增长率

defget_birth_death_rate():

year_list = get_year_list()

withopen('出生死亡及自然增长率.csv','a+',encoding='utf-8',newline='')asfiles:

fieldnames = ['年份','出生率','死亡率','自然增长率']

writer = csv.DictWriter(files, fieldnames=fieldnames)

writer.writeheader()

foryearinyear_list:

url ='http://data./easyquery.htm?m=QueryData&dbcode=hgnd&rowcode=zb&colcode=sj&wds=%5B%5D&dfwds=%5B%7B%22wdcode%22%3A%22sj%22%2C%22valuecode%22%3A%22{year}%22%7D%5D'.format(year=year)

wbdata = requests.get(url,headers=headers)

jsdata = json.loads(wbdata.text)

data = jsdata['returndata']['datanodes']

item = {

'年份': year+'年',

'出生率': data[0]['data']['data'],# 人口出生率

'死亡率': data[1]['data']['data'],# 人口死亡率

'自然增长率': data[2]['data']['data'],# 人口自然增长率

}

print(item)

writer.writerow(item)

人口年龄结构及抚养比

包含年份、年末总人口、0-14岁人口、15-64岁人口、65岁及以上人口、总抚养比、少儿抚养比、老年抚养比8项数据,数据保存为人口年龄结构及抚养比.csv文件:

defget_age_structure():

year_list = get_year_list()

withopen('人口年龄结构及抚养比.csv','a+', encoding='utf-8', newline='')asfiles:

fieldnames = ['年份','年末总人口(万人)','0-14岁人口(万人)','15-64岁人口(万人)','65岁及以上人口(万人)','总抚养比(%)','少儿抚养比(%)','老年抚养比(%)']

writer = csv.DictWriter(files, fieldnames=fieldnames)

writer.writeheader()

foryearinyear_list:

url ='http://data./easyquery.htm?m=QueryData&dbcode=hgnd&rowcode=zb&colcode=sj&wds=%5B%5D&dfwds=%5B%7B%22wdcode%22%3A%22sj%22%2C%22valuecode%22%3A%22{year}%22%7D%5D'.format(

year=year)

wbdata = requests.get(url, headers=headers)

jsdata = json.loads(wbdata.text)

data = jsdata['returndata']['datanodes']

item = {

'年份': year +'年',

'年末总人口(万人)': data[0]['data']['data'],# 年末总人口(万人)

'0-14岁人口(万人)': data[1]['data']['data'],# 0-14岁人口(万人)

'15-64岁人口(万人)': data[2]['data']['data'],# 15-64岁人口(万人)

'65岁及以上人口(万人)': data[3]['data']['data'],# 65岁及以上人口(万人)

'总抚养比(%)': data[4]['data']['data'],# 总抚养比(%)

'少儿抚养比(%)': data[5]['data']['data'],# 少儿抚养比(%)

'老年抚养比(%)': data[6]['data']['data'],# 老年抚养比(%)

}

print(item)

writer.writerow(item)

人口平均预期寿命

包含年份、平均预期寿命、男性平均预期寿命、女性平均预期寿命4项数据,数据保存为人口平均预期寿命.csv文件:

defget_avg_life():

year_list = get_year_list()

withopen('人口平均预期寿命.csv','a+', encoding='utf-8', newline='')asfiles:

fieldnames = ['年份','平均预期寿命(岁)','男性平均预期寿命(岁)','女性平均预期寿命(岁)']

writer = csv.DictWriter(files, fieldnames=fieldnames)

writer.writeheader()

foryearinyear_list:

url ='http://data./easyquery.htm?m=QueryData&dbcode=hgnd&rowcode=zb&colcode=sj&wds=%5B%5D&dfwds=%5B%7B%22wdcode%22%3A%22sj%22%2C%22valuecode%22%3A%22{year}%22%7D%5D'.format(

year=year)

wbdata = requests.get(url, headers=headers)

jsdata = json.loads(wbdata.text)

data = jsdata['returndata']['datanodes']

item = {

'年份': year +'年',

'平均预期寿命(岁)': data[0]['data']['data'],# 男性平均预期寿命(岁)

'男性平均预期寿命(岁)': data[1]['data']['data'],# 人口死亡率

'女性平均预期寿命(岁)': data[2]['data']['data'],# 人口自然增长率

}

print(item)

writer.writerow(item)

打包

同时,州的先生将Python代码和4类的人口数据打包在了一起并上传到了百度网盘上,有需要的小伙伴可以在州的先生微信公众号后台回复0015,获取下载地址:

对代码有疑问的小伙伴欢迎添加州的先生私人微信号taoist_ling,交流讨论。

python分析人口出生率代码_【源码】国家统计局人口数据采集Python脚本数据汇总 | 州的先生...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。