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