Группировка стран по населению

We use cookies. Read the Privacy and Cookie Policy

Китай и Индия по численности населения опережают все остальные страны, поэтому нашей карте не хватает контраста. И в Китае, и в Индии проживает свыше миллиарда человек, тогда как в следующей по численности населения стране — Соединенных Штатах — население составляет около 300 миллионов. Вместо того чтобы наносить на диаграмму все страны в одной группе, разделим страны на три уровня населения: менее 10 миллионов, от 10 миллионов до 1 миллиарда и более 1 миллиарда:

world_population.py

...

# Построение словаря с данными численности населения.

cc_populations = {}

for pop_dict in pop_data:

if pop_dict['Year'] == '2010':

--snip--

if code:

cc_populations[code] = population

# Группировка стран по 3 уровням населения.

(1) cc_pops_1, cc_pops_2, cc_pops_3 = {}, {}, {}

(2)for cc, pop in cc_populations.items():

. .if pop < 10000000:

. . . .cc_pops_1[cc] = pop

. .elif pop < 1000000000:

. . . .cc_pops_2[cc] = pop

. .else:

. . . .cc_pops_3[cc] = pop

# Проверка количества стран на каждом уровне.

(3)print(len(cc_pops_1), len(cc_pops_2), len(cc_pops_3))

wm = pygal.Worldmap()

wm.title = 'World Population in 2010, by Country'

x wm.add('0-10m', cc_pops_1)

wm.add('10m-1bn', cc_pops_2)

wm.add('>1bn', cc_pops_3)

. .

wm.render_to_file('world_population.svg')

Чтобы сгруппировать страны, мы создаем пустой словарь для каждой категории (1) . Затем программа перебирает cc_populations и проверяет население каждой страны (2). Блок if-elif-else добавляет элемент в соответствующий словарь (cc_pops_1, cc_pops_2 или cc_pops_3) для каждой пары «код страны—население».

Рис. 16.10. Численность мирового населения в 2010 году

В точке (3) выводится длина каждого словаря для определения размеров групп. При нанесении данных на диаграмму (4) все три группы добавляются на диаграмму Worldmap. При запуске программы сначала выводятся размеры всех групп:

85 69 2

Вывод показывает, что существуют 85 стран с населением менее 10 миллионов, 69 стран с населением от 10 миллионов до 1 миллиарда и две особые страны с ­населением свыше 1 миллиарда. Разбиение получается достаточно равномерным для получения содержательной карты. Полученная карта изображена на рис. 16.10.

Три разных цвета помогают подчеркнуть различия между уровнями населения. В каждом из трех уровней страны окрашиваются от светлого к темному оттенку в соответствии с ростом численности населения.