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")

制作出的世界人口地图

发布了3 篇原创文章 · 获赞 1 · 访问量 1934
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览