Python编程从零基础到入门实践中制作世界人口地图问题
1.当导入from pygal.il8n import COUNTRIES,发现会报错,上网查找了一下,该模块已经被弃用。新的map包为:
pygal.maps.world
在Windows中,要先安装,该模块:Win+R打开控制窗口,先找到python安装路径,输入pip install pygal_maps_world,如下图(我之前已经安装好)。

import pygal.maps.world for country_code,country_name in pygal.maps.world.COUNTRIES.items(): print(country_code,country_name)
输入以上代码,可以正常运行,表示安装成功。
2.具体完整代码如下:
country_codes.py中代码:
import pygal.maps.world def get_counrty_code(country_name): for code,name in pygal.maps.world.COUNTRIES.items(): if name==country_name:#将匹配的国家名称返回对应的编码 print(name) return code return None print(get_counrty_code('Afghanistan'))#用该打印结果验证该函数是否可以正常运行,输出:af,验证结束后删除该语句
world_population.py中代码如下:
import json import pygal.maps.world from country_codes import get_counrty_code fileName=r'D:\\Python练习\\Ch16\\population_data.json'#打开数据的路径名,这里使用绝对路径 with open(fileName) as f: #导入文件,with语句可以自动关闭文件 pop_data=json.load(f) cc_population={} #打印每个国家2010年的人口数量 for pop_dict in pop_data: if pop_dict['Year']=='2010': #找出2010年数据 country_name=pop_dict['Country Name'] #国家名称 population=int(float(pop_dict['Value'])) #对应人口数 code=get_counrty_code(country_name) #返回该国家名称对应的国别码 if code: cc_population[code]=population #如该编码存在,以国别码为键,人口数为值,存入字典 cc_pops_1,cc_pops_2,cc_pops_3={},{},{} for cc,pop in cc_population.items(): #遍历字典,划分不同等级 if pop<10000000: cc_pops_1[cc]=pop elif pop<1000000000: cc_pops_2[cc]=pop else: cc_pops_3[cc]=pop wm=pygal.maps.world.World() #创建地图实例 wm.title='World Population in 2010, by Country' #图名 wm.add('1-10m',cc_pops_1) # 添加0——1千万的国家和人口 wm.add('10m-1bn',cc_pops_2) # 添加1千万——10亿的国家和人口 wm.add('>1bn',cc_pops_3) # 添加10亿以上的国家和人口 wm.render_to_file('world_population.svg')
3.最后结果如下,在浏览器中查看结果如下:

浙公网安备 33010602011771号