Книга «Изучаем Python»



Pdf көрінісі
бет189/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   185   186   187   188   189   190   191   192   ...   238
Байланысты:
2 5343781172763690906

УПРАЖНЕНИЯ

16-1 .  Сан-Франциско:  к  какому  месту  ближе  температура  в  Сан-Франциско:  к  Ситке  или 

Долине  Смерти?  Постройте  температурную  диаграмму  для  Сан-Франциско  и  сравните . 

(Погодные данные практически для любого места можно загрузить по адресу http://www .

wunderground .com/history/ . Введите название места и диапазон дат, прокрутите страницу 

и найдите ссылку Comma-Delimited File . Щелкните правой кнопкой мыши на ссылке и со-

храните данные в файле CSV .)

16-2 . Сравнение Ситки с Долиной Смерти: разные масштабы температур отражают разные 

диапазоны данных . Чтобы точно сравнить температурный диапазон в Ситке с температурным 

диапазоном Долины Смерти, необходимо установить одинаковый масштаб по оси 

y . Изме-

ните параметры оси 

y для одной или обеих диаграмм на рис . 16 .5 и 16 .6 и проведите пря-

мое сравнение температурных диапазонов в этих двух местах (или любых других, которые 

вас интересуют) . Также можно попробовать нанести два набора данных на одну диаграмму .

16-3 . Осадки: выберите любое место и постройте диаграмму с уровнем осадков . Для начала 

ограничьтесь данными за один месяц, а когда ваш код заработает, выполните программу 

для данных за полный год .

16-4 . Исследования: постройте еще несколько визуализаций, отражающих любые другие 

аспекты погоды для интересующих вас мест .

Формат JSON

В этом разделе мы загрузим данные о странах в формате JSON и будем работать 

с ними при помощи модуля 

json


. Используя удобные средства Pygal для работы 

с географическими данными, мы построим визуализации, отражающие распреде-

ление населения по странам.

Загрузка демографических данных

Скопируйте файл 

population_data .json

, содержащий данные о численности населения 

большинства стран мира с 1960 по 2010 год, в каталог с программами этой главы. 




Формат JSON    349

Информация взята из многочисленных наборов данных, бесплатно публикуемых 

фондом Open Knowledge Foundation (http://data.okfn.org/).

Извлечение необходимых данных

Взглянем на файл 

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:

    pop_data = json.load(f)



# Вывод населения каждой страны за 2010 год.

for pop_dict in pop_data:



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

        country_name = pop_dict['Country Name']



        population = pop_dict['Value']

        print(country_name + ": " + population)

Сначала программа импортирует модуль 

json


, чтобы иметь возможность загружать 

данные из файла. Загруженные данные сохраняются в списке 

pop_data

 . Функ-

ция 

json.load()



 преобразует данные в формат, с которым может работать Python: 

в данном случае это список. В точке  создается цикл, перебирающий все элементы 




350    Глава 16  •  Загрузка данных

pop_data


. Каждый элемент представляет собой словарь с четырьмя парами «ключ—

значение», который сохраняется в переменной 

pop_dict

.

В точке  ключ 



'Year'

 каждого словаря проверяется на значение 2010. (Так как все 

значения 

population_data .json

 заключены в кавычки, выполняется сравнение строк.) 

Если словарь относится к 2010 году, то значение, связанное с ключом 

'Country

 

Name'



, сохраняется в переменной 

country_name

, а значение, связанное с ключом 

'Value'


, сохраняется в переменной 

population

 . Затем программа выводит на-

звание каждой страны и ее население.

Программа выводит последовательность названий стран и численности их на-

селения:


Arab World: 357868000 

Caribbean small states: 6880000 

East Asia & Pacific (all income levels): 2201536674

...


Zimbabwe: 12571000 

Не все данные включают точные названия стран, но это неплохое начало для даль-

нейшей работы. Теперь данные необходимо преобразовать в формат, с которым 

может работать Pygal.

Преобразование строк в числовые значения

Все ключи и значения в 

population_data .json

 хранятся в строковом формате. Чтобы 

работать с данными численности населения, необходимо преобразовать строковые 

значения в числа. Для этого в программе используется функция 

int()

:



Достарыңызбен бөлісу:
1   ...   185   186   187   188   189   190   191   192   ...   238




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет