Извлечение необходимых данных
Взглянем на файл population_data.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"
},
...
]
Фактически перед нами один длинный список Python. Каждый элемент списка представляет собой словарь с четырьмя ключами: название страны (Country Name), код страны (Country Code), год (Year) и значение (Value), представляющее численность населения. В нашей программе будут использоваться названия стран и численность населения только за 2010 год, поэтому для начала напишем программу, которая выводит только эту информацию:
world_population.py
import json
# Список заполняется данными.
filename = 'population_data.json'
with open(filename) as f:
(1) . .pop_data = json.load(f)
# Вывод населения каждой страны за 2010 год.
(2)for pop_dict in pop_data:
(3) . .if pop_dict['Year'] == '2010':
(4) . . . .country_name = pop_dict['Country Name']
. . . .population = pop_dict['Value']
. . . .print(country_name + ": " + population)
Сначала программа импортирует модуль json, чтобы иметь возможность загружать данные из файла. Загруженные данные сохраняются в списке pop_data (1) . Функция json.load() преобразует данные в формат, с которым может работать Python: в данном случае это список. В точке (2) создается цикл, перебирающий все элементы pop_data. Каждый элемент представляет собой словарь с четырьмя парами «ключ—значение», который сохраняется в переменной pop_dict.
В точке (3) ключ 'Year' каждого словаря проверяется на значение 2010. (Так как все значения population_data.json заключены в кавычки, выполняется сравнение строк.) Если словарь относится к 2010 году, то значение, связанное с ключом 'Country Name', сохраняется в переменной country_name, а значение, связанное с ключом 'Value', сохраняется в переменной population (4). Затем программа выводит название каждой страны и ее население.
Программа выводит последовательность названий стран и численности их населения:
Arab World: 357868000
Caribbean small states: 6880000
East Asia & Pacific (all income levels): 2201536674
...
Zimbabwe: 12571000
Не все данные включают точные названия стран, но это неплохое начало для дальнейшей работы. Теперь данные необходимо преобразовать в формат, с которым может работать Pygal.