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

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

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

文章目录

涉及到的模块

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

pip install requests

使用到的内置库有:

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

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

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

headers = {

'Host': 'data.stats.gov.cn',

'Connection': 'keep-alive',

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

'X-Requested-With': '',

'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','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'], # 人口自然增长率

}

print(item)

writer.writerow(item)

人口年龄结构及抚养比

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

def get_age_structure():

year_list = get_year_list()

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

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

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'], # 年末总人口(万人)

'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', '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'], # 人口自然增长率

}

print(item)

writer.writerow(item)

打包

加我微信:Python654472766 人口统计即可获取源码哦!

责任编辑:

python分析人口出生率代码_国家统计局居然也能用的上Python?人口数据Python脚本了解一下?...相关推荐

  1. python分析人口出生率代码_身份证号码各位数字的含义以及计算校验位的python代码...

    公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 其中前六位是地址码,通过百度百科我们很容易就 ...

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

    在上一篇文章<"一胎化"35年,Python可视化初探中国人口变化>中,州的先生(微信号:taoist_ling,公众号:zmister2016)通过采集国家统计局&q ...

  3. python血压测量程序代码_利用TensorFlow2.0为胆固醇、血脂、血压数据构建时序深度学习模型(python源代码)...

    背景数据描述 胆固醇.高血脂.高血压是压在广大中年男性头上的三座大山,如何有效的监控他们,做到早发现.早预防.早治疗尤为关键,趁着这个假期我就利用TF2.0构建了一套时序预测模型,一来是可以帮我预发疾 ...

  4. python爬取文献代码_爬取Pubmed文献及影响因子并尝试下载的脚本

    Abstract 本脚本实现了通过Biopython爬取pubmed文献资料,并通过scholarscope爬取影响因子数据,最后尝试通过sci-hub下载文献,三位一体的方法. Introducti ...

  5. python皮卡丘编程代码_再接再厉,用python编程13行代码解方程组(纯字符)

    因为是示例为主,我们将方程组限制在二元一次方程组:x,y两个变量,两个方程.类似这样: 每个方程有两个变量,x和y,形式为:ax+by+c=d 由于这次有了两个方程,我们提取参数的代码就适合提炼为一个 ...

  6. python英雄对战代码_用 Python 分析了 1982 场英雄联盟数据,开局前预测游戏对局胜负!...

    前言 如今,只要随便进入一个网吧,都会发现玩<英雄联盟>的人是最多的,可以这么说,<英雄联盟>已经是当之无愧的端游一哥.而在拥有如此基数玩家的<英雄联盟>,已经不仅 ...

  7. python执行txt中代码_【技术分享】文件解压之过 Python中的代码执行

    预估稿费:200RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 一.前言 Python中负责解压压缩文件的代码实现上并不安全,存在目录遍历漏洞,攻击者可以利用该漏洞覆盖_ ...

  8. python的简单程序代码_小白学编程?从一个简单的程序开始学习Python编程

    笔者思虑再三还是决定选择图文(因为百家的视频发布画质真不怎么样[囧]). 笔者学习编程的时间也挺长的,因为业余,因为时间不多,各种原因,自学编程的路特别难走.然后笔者发现,自己能为小白贡献一些力量,然 ...

  9. python怎么测试c代码_如何正确测试python中的C-API,C-API返回错误代码

    我的设置 我正在使用Python中的pytest和ctypes测试C库中的函数.C库中的每个函数调用一个嵌入式linux PCI板上的函数,然后C库函数返回一个整数,该整数映射到一组返回代码.如果函数 ...

最新文章

  1. 如何在Mac OS下用ISO包制作启动U盘
  2. Java项目:基于SSM实现房屋租赁系统
  3. 达摩院成立XG实验室 阿里官宣进军5G
  4. Linux 中的零拷贝技术,第 2 部分
  5. 人活系列Streetlights (秩)
  6. 工业级PoE交换机是如何进行工作的?使用中要注意什么?
  7. python在工作中怎么用_如何用python在工作中“偷懒”
  8. Breeze:抢先体验Kubernetes 1.13.0高可用图形化部署
  9. OS笔记047代理传值和block传值
  10. 基于模糊PID的液压舵机伺服系统
  11. mysql文章相似度计算_文章相似度计算
  12. Audi A4L楼兰宝盒拆解图
  13. UVM中p_sequencer和m_sequencer的用法及其区别
  14. widows批处理精选
  15. 为什么 K8s 在阿里能成功(转)
  16. 关于uni-app的ui库、ui框架、ui组件
  17. UI层自动化测试框架(三):基础层
  18. 20万、50万、100万年薪的算法工程师能力上有哪些差距?
  19. win10卸载程序时提示找不到xxx.msi文件
  20. @Transactional和try...catch一起使用、嵌套使用

热门文章

  1. 如何让日志打印更加优雅和实现数据链路追踪?
  2. 华为C8812E打开log日志功能
  3. 【基于SSM+MySQL+Jsp的高校学生成绩信息管理系统的设计与实现 ---(效果+源代码+数据库+获取 ~ ~】
  4. 无盘小网吧服务器配置,小网吧无盘服务器最具性价比配置推荐
  5. 百度不收录的原因-百度收录提交软件下载-百度收录技巧大全
  6. MFC快速绘制点阵图形
  7. 哈夫曼树、哈夫曼编码与压缩比
  8. 【通信技术专题:信道均衡器】
  9. xnetoe toe(tcp offload engine)测试方案与结果
  10. QQ光遇攻略机器人插件光萌插件『LightCute』来啦!内容自制,独家小精灵问答功能!!