使用Python爬虫和数据可视化,揭示人口大国历年人数的变迁

前言

人口大国通常在全球人口排名中位居前列,其人口数量远远超过其他国家。而印度和中国这两个国家的人口数量均已经超过14亿,而当前全球的人口总数也不过刚刚突破80亿而已,妥妥的天花板级别存在。或许是中国和印度在人口方面的表现太过“耀眼”,以至于后面的那些人口大国遭到了忽视。

这次就获取7个人口大国从1960~2021年的人口数据,做一个简单的数据可视化展示

获取各国历年人口数据

这次的数据,先百度xx国人口,数据就有了,比如美国的。既然找到数据,那剩下的就好办了

导入模块

import requests
import re
import csv
import json

七国人口数据url

url_list = {'https://wap.ceidata.cei.cn/detail?id=4HPs5PzbdUU%3D': '巴基斯坦','https://wap.ceidata.cei.cn/detail?id=qZzzwDe0Dqo%3D': '墨西哥','https://wap.ceidata.cei.cn/detail?id=YJPExELnyz4%3D': '俄罗斯','https://wap.ceidata.cei.cn/detail?id=IK9os%2FE3qus%3D': '巴西','https://wap.ceidata.cei.cn/detail?id=lcQfPi1wriY%3D': '印度','https://wap.ceidata.cei.cn/detail?id=YLwIVWo8jdk%3D': '美国','https://wap.ceidata.cei.cn/detail?id=cfXaPuej8ZY%3D': '中国',
}

获取数据

# for url, name in url_list.items():
url = 'https://wap.ceidata.cei.cn/detail?id=cfXaPuej8ZY%3D'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
response = requests.get(url, headers=headers)
html_data = re.findall('"innerTime":"(\d+)","data":"(.*?)"', response.text)
# json_data = json.loads(html_data)
if len(html_data) == 74:html_data = html_data[11:-1]
for date, num in html_data:num = float(num) // 100dit = {'年份': date,'人数': num}print(dit)

保存数据

f = open(f'{name}.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['年份', '人数'])
csv_writer.writeheader()

根据实际需求,你可能需要对提取的数据进行一些处理,如清洗、转换格式等。然后,可以使用适当的方法将数据保存到文件(如CSV、JSON等)或存储到数据库中。

可视化

导入数据

df = pd.read_csv('中国.csv')
df_1 = pd.read_csv('印度.csv')
df_2 = pd.read_csv('美国.csv')
df_3 = pd.read_csv('巴西.csv')
df_4 = pd.read_csv('俄罗斯.csv')
df_5 = pd.read_csv('墨西哥.csv')
df_6 = pd.read_csv('巴基斯坦.csv')

1960-2021年人口变化

from pyecharts import options as opts
from pyecharts.charts import Bar, Timeline
from pyecharts.faker import Faker
country_list = ['中国', '印度', '美国', '巴西', '俄罗斯', '墨西哥', '巴基斯坦']
# country_list = [ '印度', '美国', '巴西', '俄罗斯', '墨西哥', '巴基斯坦']
tl = Timeline()
date_list = [j for j in range(1960, 2022)]
for i, num in zip(date_list, num_list):bar = (Bar().add_xaxis(country_list).add_yaxis("人口/百万", num, label_opts=opts.LabelOpts(position="right"))
#         .add_yaxis("印度", list_1, label_opts=opts.LabelOpts(position="right"))
#         .add_yaxis("美国", list_2, label_opts=opts.LabelOpts(position="right"))
#         .add_yaxis("巴西", list_3, label_opts=opts.LabelOpts(position="right"))
#         .add_yaxis("俄罗斯", list_4, label_opts=opts.LabelOpts(position="right"))
#         .add_yaxis("墨西哥", list_5, label_opts=opts.LabelOpts(position="right"))
#         .add_yaxis("巴基斯坦", list_6, label_opts=opts.LabelOpts(position="right")).reversal_axis().set_global_opts(title_opts=opts.TitleOpts("1960-2021年人口变化 (时间: {} 年)".format(i)),
#             yaxis_opts=opts.AxisOpts(max_=1500)))tl.add(bar, "{}年".format(i))
tl.render_notebook()

对比的几个人口大国的数据,中国和印度是目前世界上人口数量最多的两个国家。在这段时间内,中国的人口总量从约6.67亿人增加到约14.12亿人,增长了近一倍。印度的人口总量从约4.46亿人增加到约14.08亿人,增长了约3倍。

其中最为稳定的就是俄罗斯了

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/18690.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ContOS7 Oracle11g 安装配置

配置yum源 cd /etc mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak mkdir yum.repos.d wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 清理缓存 yum clean all # 建缓存 yum makecache #安装epel…

关于swagger突然跳转登录页面,swagger打开跳转login页面BUG

今天建了一个初始项目,引入swagger之后,启动调用,却总跳转到一个登录页面,手足无措 启动项目后,打开swagger进行测试,但是跳转到下图页面 最后原因是导入了security的包,导致权限安全拦截 注释…

短视频矩阵管理系统源码开发:视频批量剪辑,分发功能开发示例

短视频矩阵管理系统开发,首先对服务器要求: 源码所需服务器配置 1、规格:最低8核16G 2、硬盘:系统盘40-100G,数据盘不低于100G 3、带宽:10M 4、系统:CentOS7(务必选择7.*) 部署过程中&…

蓄电池风险监控,制造业必备!

在大型加工企业中,蓄电池被广泛应用于各种设备和系统,例如备用电源、起重设备、紧急照明等。蓄电池的可靠性和性能对于企业的正常运行至关重要。 因此,为了确保蓄电池的安全运行和有效管理,引入蓄电池监控系统成为必不可少的环节。…

100天精通Golang(基础入门篇)——第15天:深入解析Go语言中函数的应用:从基础到进阶,助您精通函数编程!(进阶)

🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《I…

SQL事务与隔离

事务 事务的定义 事务是完成一个任务的多条语句,这些语句中,只要有一条语句失败,那么整个事务就会失败,即使之前的语句已经执行完毕也会被撤回 举个例子: 我去银行给王哥转钱,这个转钱呢分两个步骤,第一步先把我的钱拿出来,第二步把钱给王哥,那万一刚把我钱拿出来但是没到王…

Swift与OC的混编

一些场面话 在一位前辈的博客里看到了关于iOS开发的各种语言的混编,浅浅学习一下怎么使用。不得不说语言混编的开发者是真的🐮🍺 Swift中用OC混编 新建一个Swift文件 创建一个OC的类 选择language为OC 继续往下走,会跳出这个界…

css基础知识二十:说说对Css预编语言的理解?有哪些区别?

一、是什么 Css 作为一门标记性语言,语法相对简单,对使用者的要求较低,但同时也带来一些问题 需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用,尤其对于非前端开发工程师来讲,往…

【Spring Boot】Spring Boot日志详情:基于lombok的日志输出

文章目录 1. 何为日志文件?2. 日志文件的作用3. 日志文件的基本使用3.1 Spring Boot中的日志3.2 自定义日志打印 4 日志级别4.1 日志级别的作用4.2 日志级别的分类4.3 日志级别的设置 5 日志持久化6 基于lombok的日志输出6.1 lombok 简单输出日志案例6.2 浅谈 lombo…

【C++ OJ练习】7.字符串相加

1.题目链接 力扣 2.解题思路 拿到每个字符后 减去字符0 转化成对应的数字 再相加即可 倒着加 因为有进位的情况 最后头插或 者尾插加逆置 3.代码 class Solution { public:string addStrings(string num1, string num2) {//倒着往回加int end1 num1.size() - 1;int end2…

深度学习笔记之Transformer(六)Position Embedding铺垫:Skipgram与CBOW模型

深度学习笔记之Transformer——PositionEmbedding铺垫:Skipgram与CBOW模型 引言回顾: Word2vec \text{Word2vec} Word2vec模型补充:关于 Word2vec \text{Word2vec} Word2vec的一些说明 2023 / 7 / 10 2023/7/10 2023/7/10补充:关于…

六、consumer源码解读

Consumer源码解读 本课程的核心技术点如下: 1、consumer初始化 2、如何选举Consumer Leader 3、Consumer Leader是如何制定分区方案 4、Consumer如何拉取数据 5、Consumer的自动偏移量提交 Consumer初始化 从KafkaConsumer的构造方法出发,我们跟踪到…