Python实现世界人口地图

1.世界人口地图介绍

本程序将从一个人口数据集中提取出每个国家2010年的人口数量,然后利用Pygal中的地图制作工具,将其展示在地图上。

本程序将使用population_data.json文件,它包含全球大部分国家1960~2010年的人口数据,来源:https://ehmatthes.github.io/pcc/

2.获取两个字母的国别码

Pygal中的地图制作工具要求数据为特定的格式:用国别码表示国家,以及用数字表示人口数量。population_data.json中包含的是三个字母的国别码,但Pygal使用两个字母的国别码。因此,这里使用get_country_code(country_name)方法,来根据国家名获取两个字母的国别码。

from pygal_maps_world.i18n import COUNTRIES


def get_country_code(country_name):
    """根据指定的国家,返回Pygal使用的两个字母的国别码"""
    for code, name in COUNTRIES.items():
        if name == country_name:
            return code
    # 如果没有找到指定的国家,就返回None
    return None

3.制作世界地图

Pygal提供了图表类型Worldmap ,可帮助制作呈现各国数据的世界地图。

import json
import pygal
from country_code import get_country_code


# 将数据集加载到一个列表中
filename = 'population_data.json'
with open(filename) as file:
    pop_data = json.load(file)

# 创建一个包含人口数量的字典
cc_populations = {}
for pop_dict in pop_data:
    if pop_dict["Year"] == '2010':
        country_name = pop_dict["Country Name"]
        # 个别人口数据包含小数点,因此先将其转换为浮点数,再将浮点数转换为整数
        population = int(float(pop_dict["Value"]))
        code = get_country_code(country_name)
        if code:
            cc_populations[code] = population

# 根据人口数量将所有的国家分成三组
cc_pop_1, cc_pop_2, cc_pop_3 = {}, {}, {}
for cc, pop in cc_populations.items():
    if pop < 10000000:
        cc_pop_1[cc] = pop
    elif pop < 1000000000:
        cc_pop_2[cc] = pop
    else:
        cc_pop_3[cc] = pop

# 创建世界人口地图
wm_style = pygal.style.RotateStyle('#336699')  # 让地图的颜色更一致,也更容易区分不同的编组
wm = pygal.maps.world.World(style=wm_style)
wm.title = "World Population in 2010, by Country"
wm.add('0-10m', cc_pop_1)
wm.add('10m-1bn', cc_pop_2)
wm.add('>1bn', cc_pop_3)
wm.render_to_file("world_population_2010.svg")

制作出的世界人口地图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值