УПРАЖНЕНИЯ
16-5 . Все страны: на картах, построенных в этом разделе, наша программа не смогла
автоматически найти двухбуквенные коды примерно для 12 стран . Определите, что это
за страны, и найдите коды в словаре COUNTRIES . Добавьте блок if-elif в get_country_code(),
чтобы функция возвращала правильные коды для этих конкретных стран:
if country_name == 'Yemen, Rep.'
return 'ye'
elif ...
Итоги
361
Разместите этот код после цикла COUNTRIES, но перед командой return None . Когда это
будет сделано, карта станет более полной .
16-6 . Валовый внутренний продукт: Фонд Open Knowledge Foundation предоставляет на-
бор данных с величиной валового внутреннего продукта (ВВП) по каждой стране мира;
его можно загрузить по адресу http://data .okfn .org/data/core/gdp/ . Загрузите версию этого
набора данных в формате JSON и нанесите на карту ВВП каждой страны мира за самый по-
следний год в наборе данных .
16-7 . Выберите данные самостоятельно: Всемирный банк предоставляет различные наборы
данных, разбитые по странам . Откройте страницу http://data .worldbank .org/indicator/ и най-
дите набор данных, который покажется вам интересным . Щелкните на наборе данных,
щелкните по ссылке Download Data и выберите формат CSV . Вы получите три файла CSV,
два из которых снабжены пометкой Metadata; используйте третий файл CSV . Напишите про-
грамму для генерирования словаря; ключами словаря являются двухбуквенные коды стран
Pygal, а значениями — выбранные вами данные из файла . Нанесите данные на диаграмму
Worldmap и оформите карту на свое усмотрение .
16-8 . Тестирование модуля country_codes: во время разработки модуля country_codes мы
использовали команды print для проверки работоспособности функции get_country_code() .
Напишите нормальный тест для этой функции, используя информацию из главы 11 .
Итоги
В этой главе вы научились работать с сетевыми наборами данных. Вы узнали, как
обрабатывать файлы CSV и JSON и как извлечь данные, на которых вы хотите со-
средоточиться. Используя реальные погодные данные, вы освоили новые возмож-
ности работы с библиотекой matplotlib, включая использование модуля datetime
и возможность нанесения нескольких наборов данных на одну диаграмму. Вы
узнали, как нанести данные на карту мира с использованием Pygal и как изменить
оформление карт и диаграмм Pygal.
С накоплением опыта работы с файлами CSV и JSON вы сможете обрабатывать
практически любые данные, которые вам потребуется проанализировать. Многие
сетевые наборы данных могут загружаться хотя бы в одном из этих форматов. По-
сле работы с этими форматами вам также будет проще усвоить другие форматы
данных.
В следующей главе вы напишете программы для автоматического сбора данных
из сетевых источников, а затем создадите визуализации этих данных. Это занятие
весьма интересное, если вы рассматриваете программирование как увлечение,
и абсолютно необходимое, если вы занимаетесь программированием профессио-
нально.
17
Работа с API
В этой главе вы научитесь писать специализированные программы для построения
визуализаций на основании загруженных ими данных. Ваша программа будет ис-
пользовать программный интерфейс (API) веб-приложения для автоматического
запроса конкретной информации с сайта (вместо целых страниц). Полученная
информация будет использоваться для построения визуализации. Так как про-
граммы, написанные по такой схеме, всегда используют самые свежие данные для
построения визуализации, даже при быстро изменяющихся данных полученная
диаграмма всегда будет оставаться актуальной.
Использование API веб-приложений
API веб-приложения представляет собой часть веб-сайта, предназначенную для
взаимодействия с программами, которые используют особым образом построенные
URL-адреса для запроса информации. Подобные запросы называются
вызовами
API
. Запрашиваемые данные возвращаются в удобном формате (например, JSON
или CSV). Многие приложения, зависящие от внешних источников данных (как
приложения, интегрирующиеся с сайтами социальных сетей), используют вызовы
API.
Git и GitHub
Наша визуализация будет построена на базе информации с GitHub — сайта, органи-
зующего совместную работу программистов над проектами. Мы воспользуемся API
GitHub для запроса информации о проектах Python и последующего построения
интерактивной визуализации относительной популярности этих проектов в Pygal.
Имя GitHub (
https://github.com/
) происходит от Git — распределенной системы
управления версиями, которая позволяет программистам совместно трудиться над
проектами. Пользователи Git управляют своим индивидуальным вкладом в проект,
чтобы изменения, вносимые одним человеком, не конфликтовали с изменениями,
вносимыми другими людьми. Когда вы реализуете новую возможность в проекте,
Git отслеживает изменения, внесенные в каждый файл. Если новый код успешно
работает, вы
закрепляете
внесенные изменения, и Git записывает новое состояние
проекта. Если же вы допустили ошибку и хотите отменить внесенные изменения,
Git позволяет легко вернуться к любому из предыдущих рабочих состояний.
Использование API веб-приложений
363
(За дополнительной информацией об управлении версиями с использованием Git
обращайтесь к приложению Г.) Проекты GitHub хранятся в
репозиториях
, содер-
жащих все ресурсы, связанные с проектом: код, информацию о других участниках,
все проблемы или отчеты об ошибках и т. д.
Если проект нравится пользователям GitHub, то пользователи могут «поставить
звезду», чтобы продемонстрировать свою поддержку и следить за проектами,
которые могут им пригодиться. В этой главе мы напишем программу для авто-
матической загрузки информации о проектах Python с наибольшим количеством
звезд на GitHub, а затем построим содержательную визуализацию таких проектов.
Запрос данных с использованием вызовов API
GitHub поддерживает API (программный интерфейс) для запроса разнообразной
информации посредством вызовов API. Чтобы понять, как выглядит вызов API,
введите следующий адрес в адресной строке своего браузера и нажмите Enter:
https://api.github.com/search/repositories?q=language:python&sort=stars
Этот вызов возвращает количество проектов Python, размещенных на GitHub в на-
стоящее время, а также информацию о самых популярных репозиториях Python.
Рассмотрим вызов подробнее: первая часть
https://api.github.com/
передает за-
прос части сайта GitHub, отвечающей на вызовы API. Следующая часть,
search/
repositories
, приказывает API провести поиск по всем репозиториям в GitHub.
Вопросительный знак после
repositories
означает, что мы собираемся передать
аргумент. Символ
q
обозначает запрос (Query), а знак равенства начинает опре-
деление запроса (
q=
). Выражение
language:python
указывает, что запрашивается
информация только по репозиториям, для которых основным языком указан
Python. Завершающая часть,
&sort=stars
, сортирует проекты по количеству при-
своенных им звезд.
В следующем фрагменте приведены несколько начальных строк ответа. Вероятно,
по виду ответа вы уже поняли, что этот URL-адрес не предназначен для обычных
пользователей.
{
"total_count": 713062,
"incomplete_results": false,
"items": [
{
"id": 3544424,
"name": "httpie",
"full_name": "jkbrzt/httpie",
...
Как видно из второй строки вывода, на момент написания книги на GitHub было
найдено 713 062 проектов Python. Значение
"incomplete_results"
равно
false
,
а значит, запрос был обработан успешно (информация не является неполной). Если
бы у GitHub возникли проблемы с полной обработкой запроса API, то в этом поле
было бы возвращено значение
true
. Возвращаемые данные отображаются в списке
"items"
с информацией о самых популярных проектах Python на GitHub.
364
Достарыңызбен бөлісу: |