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

news2024/11/15 17:38:24

前言

人口大国通常在全球人口排名中位居前列,其人口数量远远超过其他国家。而印度和中国这两个国家的人口数量均已经超过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) // 100
    dit = {
        '年份': 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.coloradmin.cn/o/732077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【CANopen】周立功轻松入门CANopen笔记

前言 想学习些新东西了,原本想直接学学Ethercat,但是简单看了看对象字典啥的概念一头雾水的,决定先从CANopen开始,Ethercat看着头疼。Etehrcat和CANopen有挺多类似的地方。感谢ZLG的这个入门笔记,我似乎是看懂了些&am…

非主流币波段策略

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

数据合并--Pandas

1. 键匹配合并:merge()函数 1.1 函数功能 合并DataFrame或者命名的Series,命名的Series被视为单列的DataFrame 1.2 函数语法 pandas.merge(left, right, howinner, onNone, left_onNone, right_onNone, left_indexFalse, right_indexFalse, sortFalse, suffixes…

最长公共子序列LCA

最长连续公共子序列 题目链接:3692. 最长连续公共子序列 - AcWing题库 /*解法:定义dp[i1][j1]为以a[i]结尾的字符串和b[j]结尾的字符串的最长连续公共子序列那么对于a[i] b[j]的时候 dp[i1][j1] dp[i][j]1否则为0 其他就是细枝末节 */ #include<iostream> #include<…

【shiro】springboot整合shiro

springboot整合shiro&#xff0c;实现用户登录认证&#xff0c;权限校验及rememberMe 1.数据库准备 user 用户表 CREATE TABLE user (id bigint NOT NULL,name varchar(30) DEFAULT NULL,pwd varchar(35) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,ri…

《Java核心技术大会2023》——AIC送书第一期

共同深入探讨 Java 生态&#xff01;直播预约&#xff1a;视频号“IT阅读排行榜” 大会简介 人工智能在22年、23年的再次爆发让Python成为编程语言里最大的赢家&#xff1b;云原生的持续普及令Go、Rust等新生的语言有了进一步叫板传统技术体系的资本与底气。我们必须承认在近…

smale周报

2023.7.7 相关工作近况存在的问题展望 相关工作近况 近期仍就进行3D断层识别实验&#xff0c;实验了很多版本&#xff0c;不同的损失函数和模型&#xff0c;发现当下的效果更好。之前loss一直不正常&#xff0c;改变了之前的一些小问题&#xff0c;使模型和损失函数以及数据匹…

具备捕获 Web2 用户能力的 PoseiSwap,治理通证$POSE再度涨超 360%

Nautilus Chain 是行业内首个模块化 Layer3 架构链&#xff0c;开发者能够基于模块化进行定制化开发&#xff0c;并有望进一步推动 Web3 应用向隐私、合规等方向发展。当然&#xff0c;Nautilus Chain 的特殊之处还在于为生态用户带来丰厚的空投预期&#xff0c;据悉上线 Nauti…

Ubuntu 的移动梦醒了

老实讲&#xff0c;移动版 Ubuntu 在手机、平板上的发展自始至终可能都没有达到过 Canonical 的期望&#xff0c;既然如此&#xff0c;不再勉为其难地坚持下去&#xff0c;或许才是更加明智的做法。 时至今日&#xff0c;官方显然也意识到了这一点&#xff0c;在早些时候发布的…

EPSON机械臂控制记录

我使用的机器人型号为EPSON LS3-4013&#xff0c;在本文中记录了机械臂控制器和电脑连接&#xff0c;及电脑程序控制机械臂的完整流程。 1 USB连接电脑和机械臂 将USB连接电脑和控制器的PC插口。在EPSON RC 软件中选择 设置->电脑和控制器通信。其中默认包括USB通信&#…

标签平滑知识点

一、什么是标签平滑 标签平滑&#xff08;Label smoothing&#xff09;&#xff0c;像L1、L2和dropout一样&#xff0c;是机器学习领域的一种正则化方法&#xff0c;通常用于分类问题&#xff0c;目的是防止模型在训练时过于自信地预测标签&#xff0c;改善泛化能力差的问题。…

OK Print Watch 打印服务监控软件---Crack

O&K Print Watch 是一个服务器端打印监视器。此打印审核工具允许用户控制打印作业、纸张使用情况&#xff0c;并从打印服务器、本地、共享或网络打印机收集统计信息。使用O&K Print Watch&#xff0c;您可以根据许多不同的打印限制为用户定义打印配额。这些功能使用户能…

在Oracle VM VirtualBox 安装ubuntu-22.04.2 后打不开终端处理

1、下载ubuntu-22.04.2-desktop-amd64.iso 下载地址&#xff1a; https://cn.ubuntu.com/download/desktop2、安装 3、直接下一步即可 3、装好系统&#xff0c;发现打不开终端 解决办法&#xff1a;设置->区域与语言 查看语言和格式是否一致&#xff0c;不一致需修改。若…

sqlserver数据库命令行客户端安装

项目情况 项目上需要通过执行sql语句去更新一些功能 直接进入数据库去进行执行太麻烦&#xff0c; 对基础技术人员的要求比较高&#xff0c;执行效率低 参考资料 sqlcmd 实用工具 - SQL Server | Microsoft Learn 下载 ODBC Driver for SQL Server - ODBC Driver for SQL S…

感知机模型

1. 提出问题 问题&#xff1a;有一组训练数据集 T { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } T\{(x_1,y_1), (x_2,y_2), \ldots ,(x_N,y_N)\} T{(x1​,y1​),(x2​,y2​),…,(xN​,yN​)} 其中 x i ∈ X R n x_i\in\mathcal{X}R^n xi​∈XRn&#xff0c; y …

Redis【实战篇】---- UV统计

Redis【实战篇】---- UV统计 1. UV统计 - HyperLogLog2. UV统计 - 测试百万数据的统计 1. UV统计 - HyperLogLog 首先我们搞懂两个概念&#xff1a; UV&#xff1a;全称Unique Visitor&#xff0c;也叫独立访客量&#xff0c;是指通过互联网访问、浏览这个网页的自然人。1天内…

Linux信号机制

转自&#xff1a;深入理解Linux信号机制(1.0)_城中之城的博客-CSDN博客 一、信号机制概览 相信大家对信号并不陌生&#xff0c;很多人都用过kill命令或者CtrlC组合键杀死过进程&#xff0c;或者遇到过程序因为收到SIGSEGV信号而崩溃的。而对信号的基本原理&#xff0c;估计很…

DenseNet算法实战

DenseNet算法实战 文章目录 DenseNet算法实战[TOC](文章目录) 前言一、设计理念二、网络结构1.DenseNet网络结构2. DenseBlock Transition结构3. DenseBlock 非线性结构 三、代码实现1. 导入相关的包2. DenseBlock 内部结构3. DenseBlock 模块4. Transition 层5. 最后实现Dens…

23款奔驰S400商务型加装原厂前排座椅通风系统,夏天必备的功能

通风座椅的主动通风功能可以迅速将座椅表面温度降至适宜程度&#xff0c;从而确保最佳座椅舒适性。该功能启用后&#xff0c;车内空气透过打孔皮饰座套被吸入座椅内部&#xff0c;持续时间为 8 分钟。然后&#xff0c;风扇会自动改变旋转方向&#xff0c;将更凉爽的环境空气从座…

TIA博途_封装FB或FC块时将未分配参数的管脚隐藏的具体方法示例

TIA博途_封装FB或FC块时将未分配参数的管脚隐藏的具体方法示例 如下图所示&#xff0c;在某个项目中添加一个模拟量平均值滤波FB块&#xff0c;FB块的输入输出接口如图中所示&#xff0c; FB块编写完成后&#xff0c;在OB1中调用该FB块&#xff0c;可以看到需要配置的相关管脚…