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

2023-11-16

前言

人口大国通常在全球人口排名中位居前列,其人口数量远远超过其他国家。而印度和中国这两个国家的人口数量均已经超过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倍。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 在Windows服务器上搭建Nuget私人服务器(超~详细)

    在Windows服务器上搭建Nuget私人服务器 一 使用VS2017 VS2019新建空白解决方案 操作如图 步骤一 这里以VS2019为例 打开VS2019 选择 创建新项目 选项 步骤二 选择 空白解决方案 点击 下一步 步骤三 填写
  • React中setState()更新状态的两种写法及相关问题

    1 setState updater callback 函数式的setState updater是一个返回stateChange对象的函数 如下代码所示 它接收的state和props都保证为最新 updater的返回值会与state进行浅
  • 关于Socket编程中的inet_ntop、inet_pton和inet_ntoa、inet_addr

    VS2013中调试Socket代码时 遇到了点小问题 问题代码为 cpp view plain copy inet ntoa addrClient sin addr 生成错误消息为 plain view plain copy error C
  • Spark中的基本概念

    Spark中的基本概念 1 基本概念 1 1 RDD 弹性分布式数据集 1 2 DAG 有向无环图 1 3 Partition 数据分区 1 4 NarrowDependency 窄依赖 1 5 ShuffleDependency 宽依赖
  • 互斥锁,自旋锁,原子操作的原理,区别和实现

    一 互斥锁 原理 互斥锁属于sleep waiting类型的锁 例如在一个双核的机器上有两个线程 线程A和线程B 它们分别运行在Core0和Core1上 假设线程A想要通过pthread mutex lock操作去得到一个临界区的锁 而此时
  • windows系统软件开发平台配置

    1 mongodb安装及配置 参考文档 https blog csdn net xuforeverlove article details 88344213 1 1 临时启动mongodb服务 a 打开mongodb安装文件夹 进入并复制d
  • 【七夕活动精选】致你的七夕礼物——3D Heart,跳动的 3D 爱心

    程序效果很简单 是一颗跳动的爱心 在心脏下面有一行小字写着 七夕快乐 按住鼠标左键并拖动可以让它旋转起来 按住右键可以让这颗心暂时停止跳动 执行效果如下 完整的源代码如下 程序名称 致你的七夕礼物 3D Heart 编译环境 Visual
  • sqli-labs 41——65关攻略

    Less 41 基于错误的POST型单引号字符型注入 与之前讲的Less 40的区别 s q l S E L E C T F R O M u s e r s W H E R E i d sql SELECT FROM users WHERE
  • 2023年华中杯选题人数公布

    2023年华中杯选题人数公布 经过一晚上代码的编写 论文的写作 C题完整版论文已经发布 注 蓝色字体为说明备注解释字体 不能出现在大家的论文里 黑色字体为论文部分 大家可以根据红色字体的注记进行摘抄 对应的详细的写作视频教程 争取1号晚上发
  • [机器学习笔记] 支持向量机SVM 和逻辑回归LR的异同

    参考 https www cnblogs com zhizhan p 5038747 html 为什么把SVM和LR放在一起进行比较 一是因为这两个模型应用广泛 二是因为这两个模型有很多相同点 在使用时容易混淆 不知道用哪个好 特别是对初学
  • 性能测试-压力测试-jmeter简单实战

    文章目录 一 压力测试 1 性能指标 响应时间 RT HPS Hits Per second TPS Transaction Per second QPS Query Per second 最大响应时间 Max Response Time
  • oracle如何提高数据库的性能和可用性

    进行数据库优化 通过定期执行优化操作 如维护索引 调整内存参数 优化 SQL 语句等 可以提高数据库的性能和可用性 执行数据库碎片整理 通过执行表空间碎片整理 索引碎片整理 表碎片整理等操作 可以优化数据库的碎片 提高数据存储效率 执行数据
  • ruoyi对数据二次处理后分页失效

    业务场景 正常业务场景下 在service层只做一次查询就能满足需求 若需要分页 只需在Controller层添加继承BaseController 使用startPage 和getDataTable 即可 业务需求存在需要对查询的数据做二次
  • SpringCloud 服务保护机制Hystrix

    微服务高可用技术 大型复杂的分布式系统中 高可用相关的技术架构非常重要 高可用架构非常重要的一个环节 就是如何将分布式系统中的各个服务打造成高可用的服务 从而足以应对分布式系统环境中的各种各样的问题 避免整个分布式系统被某个服务的故障给拖垮
  • Unity中的C#与C++交互

    参考 Unity Manual Low level Native Plugin Interface 源码demo 演示了一个渲染三角形的例子 C 部分代码实现了对底层API的封装以及核心功能实现 RenderingPlugin cpp中定义
  • 记一次Gradle构建项目Cannot locate tasks that match ‘:xxxx‘ as task ‘xxx‘ not found in root project ‘xxxx‘错误

    问题 在使用Gradle构建项目时 遇见了一个奇怪的问题 运行报错如下 Cannot locate tasks that match xxxx as task xxx not found in root project xxxx 思路 单看
  • Linux基础学习笔记之——软件安装:源码与Tarball

    软件安装 源码与Tarball 1 开放源码的软件安装与升级简介 Linux 上面的软件几乎都是经过 GPL 的授权 所以每个软件几乎均提供源码 并且你可以自行修改该程序代码 以符合个人的需求 这就是开放源码的优点 1 1 什么是开放源码
  • 腾讯事务处理技术验证系统3TS-Coo模板安装文档&&说明文档(小白向,简单轻松就能上手)

    本篇文章将详细说明3TS Coo模板的安装和使用 帮助您快速上手项目 第一部分是简单的基础Docker相关概念 精炼的几句小白话快速理解即可 第二部分是快速安装项目环境的安装文档 简单几行命令搞定 小白也能轻松上手 第三部分是对于已经安装的
  • jupter notebook代码无法执行,出现in[*]的解决办法

    In 数字 代表已经执行的代码 其中数字代表可执行的代码编号 解决办法 点击Kernel中的Restart Run all 重新执行全部代码 系统会从In 1 依次执行 并且报错 我们一直改错即可 直至In 变为In 数字 即可
  • 使用Python爬虫和数据可视化,揭示人口大国历年人数的变迁

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