Формат JSON
351
дит из-за того, что Python не может преобразовать строку с дробным значением
'1127437398.85751'
в целое число . (Вероятно, дробное значение было получено
в результате интерполяции в те годы, в которые перепись населения не производи-
лась.) Чтобы решить эту проблему, мы сначала преобразуем строку в вещественное
число, а затем преобразуем вещественное число в целое:
world_population.py
...
for pop_dict in pop_data:
if pop_dict['Year'] == '2010':
country = pop_dict['Country Name']
population = int(float(pop_dict['Value']))
print(country + ": " + str(population))
Функция
float()
преобразует строку в целое число, а функция
int()
отсекает
дробную часть и возвращает целое число. Теперь можно вывести полный набор
данных численности населения за 2010 год без ошибок:
Arab World: 357868000
Caribbean small states: 6880000
East Asia & Pacific (all income levels): 2201536674
...
Zimbabwe: 12571000
Каждая строка успешно преобразуется сначала в вещественное, а затем в целое
число. Обратите внимание: данные хранятся в числовом формате, чтобы их можно
было использовать для построения карты распределения населения.
Получение кодов стран
Прежде чем переходить к построению карты, необходимо разобраться еще с одним
аспектом данных. Инструментарий Pygal для работы с географическими картами
ожидает получить данные в четко определенном формате: страны должны задавать-
ся кодами стран, а численность населения — значениями. Существует несколько
стандартных наборов кодов стран, часто применяемых при работе с геополитиче-
скими данными; коды, включенные в
population_data .json
, состоят из трех букв, но
Pygal использует систему с двухбуквенными кодами. Нужно найти способ полу-
чения двухбуквенных кодов стран по их названиям.
Коды стран Pygal хранятся в модуле
i18n
(сокращение от «internationalization»).
В словаре
COUNTRIES
двухбуквенные коды стран являются ключами, а названия
стран — значениями. Чтобы просмотреть коды, импортируйте словарь из модуля
i18n
и выведите его ключи и значения:
countries.py
from pygal.i18n import COUNTRIES
for country_code in sorted(COUNTRIES.keys()):
print(country_code, COUNTRIES[country_code])
В цикле
for
ключи сортируются в алфавитном порядке . Затем программа выво-
дит каждый код страны и страну, с которой этот код связан:
352 Глава 16 • Загрузка данных
ad Andorra
ae United Arab Emirates
af Afghanistan
...
zw Zimbabwe
Напишем функцию, которая перебирает
COUNTRIES
и возвращает коды стран.
Функция будет размещаться в отдельном модуле с именем
country_codes
, чтобы
ее можно было позднее импортировать в программу визуализации:
Достарыңызбен бөлісу: