加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

国家统计局居然也能用的上Python?人口数据Python脚本了解一下?

发布时间:2020-12-17 00:39:29 所属栏目:Python 来源:网络整理
导读:通过采集国家统计局“国家数据”网站中提供的中国历年人口数据,并对数据进行可视化的探索,发现了一些有意思和令人深思的现象和趋势。 有一些小伙伴后台留言希望公布一下采集“国家数据”网站人口数据的代码,在这里,就将总人口、人口出生率、人口年龄结构

通过采集国家统计局“国家数据”网站中提供的中国历年人口数据,并对数据进行可视化的探索,发现了一些有意思和令人深思的现象和趋势。

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

文章目录

涉及到的模块

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

pip install requests

使用到的内置库有:

  • json:用于解析接口返回的数据;
  • csv:用于将数据写入到CSV文件中;

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

headers = {
 'Host': 'data.stats.gov.cn','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.stats.gov.cn/easyquery.htm?cn=C01','Accept-Encoding': 'gzip,deflate','Accept-Language': 'zh-CN,zh;q=0.9',}

生成年份列表

# 获取年份列表
def get_year_list():
 year_list = []
 for i in range(1949,2017):
 year_list.append(str(i))
 return year_list

总人口

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

# 总人口
def get_total_population():
 year_list = get_year_list()
 with open('总人口.csv','a+',encoding='utf-8',newline='') as files:
 fieldnames = ['年份','年末总人口(万人)','男性人口(万人)','女性人口(万人)','城镇人口(万人)','乡村人口(万人)']
 writer = csv.DictWriter(files,fieldnames=fieldnames)
 writer.writeheader()
 for year in year_list:
 url = 'http://data.stats.gov.cn/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文件:

# 人口出生率、死亡率和自然增长率
def get_birth_death_rate():
 year_list = get_year_list()
 with open('出生死亡及自然增长率.csv','出生率','死亡率','自然增长率']
 writer = csv.DictWriter(files,fieldnames=fieldnames)
 writer.writeheader()
 for year in year_list:
 url = 'http://data.stats.gov.cn/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文件:

def get_age_structure():
 year_list = get_year_list()
 with open('人口年龄结构及抚养比.csv','0-14岁人口(万人)','15-64岁人口(万人)','65岁及以上人口(万人)','总抚养比(%)','少儿抚养比(%)','老年抚养比(%)']
 writer = csv.DictWriter(files,# 年末总人口(万人)
 '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文件:

def get_avg_life():
 year_list = get_year_list()
 with open('人口平均预期寿命.csv','平均预期寿命(岁)','男性平均预期寿命(岁)','女性平均预期寿命(岁)']
 writer = csv.DictWriter(files,'平均预期寿命(岁)': data[0]['data']['data'],# 男性平均预期寿命(岁)
 '男性平均预期寿命(岁)': data[1]['data']['data'],# 人口死亡率
 '女性平均预期寿命(岁)': data[2]['data']['data'],# 人口自然增长率
 }
 print(item)
 writer.writerow(item)

打包

进群:548377875? 统计即可获取源码哦!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读