Python学习笔记day10

一、处理Json数据

    Python提供了json模块来处理Json数据。Json是一种数据格式,使用很广泛。

    现在有一个json文件population_data.json,信息如下:

[   
	{
		"Country Name": "Arab World",
		"Country Code": "ARB",
		"Year": "1960",
		"Value": "96388069"   
	},
	{     
		"Country Name": "Arab World",
		"Country Code": "ARB",
		"Year": "1961",
		"Value": "98882541.4"
	}
]

    这是一个列表,列表元素是两个字典,每个字典包含四个键值对。类似于这种的数据格式就称为Json格式。

    接下来我们来使用Python提供的jsonk模块来读取这个Json文件:

import json
filename='population_data.json'
with open(filename) as f:
    pop_data=json.load(f)
for pop_dict in pop_data:
    if pop_dict['Year']=='1960':
        country_name=pop_dict['Country Name']
        value=pop_dict['Value']
        print(country_name+':'+value)

    首先我们需要导入json模块,接着使用json模块中的load函数将文件对象作为其实参,返回Json文件中的列表。接下来的操作就简单了,只需要来操作列表即可。值得注意的是,人口数量可能会带有小数,而且通过字典索引出来的值默认为字符串形式,例如字符串'36515226.2649',如果想要将带有小数的字符串转换为整数,则需要进行二次转换,即先将字符串转换为浮点型数据,再将浮点型数据转换为整型,例如int(float('36515226.2649')),因为Python无法实现直接从带有小数的字符串转换为整型。

二、绘制世界地图

    Python提供的Pygal可以用来绘制地图,但是它要求数据为特定的格式:用两位的国别码来表示国家,用数字表示人口数量。Pygal使用的国别码存在模块pygal_maps_worl.i18n中的COUNTRIES字典中,键值分别为两位的国别码和国家名。先将键值打印出来:

from pygal_maps_world.i18n import COUNTRIES
for code in sorted(COUNTRIES.keys()):
    print(code,COUNTRIES[code])

    在使用pygal_maps_worl.i18n之前,需要先在CMD中运行pip install pygal_maps_world来安装。

    在获得了国别码后,就可以来使用pygal提供的World图表类型来绘制世界地图了。接下来我们让中国凸显在世界地图上:

import pygal.maps.world
wm = pygal.maps.world.World()
wm.title='China'
wm.add('China',['cn','tw'])
wm.render_to_file('China.svg')

    之所以将tw表示台湾也单独列出,是因为cn不包含台湾,但是在COUNTRIES字典中tw键对应的值是台湾并注明了是中国的一个省,看到这里我才安心了。

    接着,我们可以给不同的国家显示他们的人口数量,pygal会根据数量的大小自动进行颜色映射,数量少的国家颜色浅,反之颜色深。例如:

import pygal.maps.world
wm = pygal.maps.world.World()
wm.title='Populations'
wm.add('China',{'cn':130000000,'tw':20000000})
wm.add('America',{'us':100000000})
wm.render_to_file('Populations.svg')
    以上代码通过将字典作为实参来指定国家的人口数量。

猜你喜欢

转载自blog.csdn.net/qq_26593465/article/details/80643777