前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Python爬虫和数据可视化,揭示人口大国历年人数的变迁

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

作者头像
松鼠爱吃饼干
发布2023-09-14 15:22:37
3230
发布2023-09-14 15:22:37
举报
文章被收录于专栏:Python分享

前言

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

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

获取各国历年人口数据

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

导入模块

代码语言:javascript
复制
import requests
import re
import csv
import json

七国人口数据url

代码语言:javascript
复制
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': '中国',
}

获取数据

代码语言:javascript
复制
# 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)

保存数据

代码语言:javascript
复制
f = open(f'{name}.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['年份', '人数'])
csv_writer.writeheader()

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

可视化

导入数据

代码语言:javascript
复制
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年人口变化

代码语言:javascript
复制
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倍。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-09 21:54,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 松鼠爱吃饼干 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 获取各国历年人口数据
    • 导入模块
      • 七国人口数据url
        • 获取数据
          • 保存数据
          • 可视化
            • 导入数据
              • 1960-2021年人口变化
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档