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


Рис. 16.6. Максимальная и минимальная температура в Долине Смерти 348



Pdf көрінісі
бет209/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   205   206   207   208   209   210   211   212   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )

Рис. 16.6.
Максимальная и минимальная температура в Долине Смерти


348
Глава 16 • Загрузка данных
При выполнении 
highs_lows .py
мы видим, что данные отсутствуют только для одной 
даты:
2014-02-16 missing data
Полученная диаграмма изображена на рис. 16.6.
Сравнивая эту диаграмму с диаграммой для Ситки, мы видим, что в Долине Смер-
ти теплей, чем на юго-востоке Аляски (как и следовало ожидать), но при этом 
температурный диапазон в пустыне более широкий. Высота закрашенной области 
наглядно демонстрирует этот факт.
Во многих наборах данных, с которыми вы будете работать, будут встречаться от-
сутствующие, неправильно отформатированные или некорректные данные. В таких 
ситуациях воспользуйтесь теми инструментами, которые вы освоили в первой 
половине книги. В данном примере для обработки отсутствующих данных исполь-
зовался блок 
try
-
except
-
else
. Иногда команда 
continue
используется для пропуска 
части данных, или же данные удаляются после извлечения вызовом 
remove()
или 
del
. Используйте любое работающее решение — лишь бы в результате у вас полу-
чилась осмысленная, точная визуализация.
УПРАЖНЕНИЯ
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

Достарыңызбен бөлісу:
1   ...   205   206   207   208   209   210   211   212   ...   266




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

    Басты бет