Scraper Обновлено: 19 November, 2018

Пространственные визуализации и анализ в Python с Folium

  Перевод   Ссылка на автора

фото НАСА на Unsplash

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

Примечание: когда я говорю пространственные данные в этой статье, я имею в виду все виды данных, которые содержат географические (широта, долгота, высота) как часть своей функции.

Я предполагаю, что вы уже понимаете о:

  1. питон
  2. Ноутбуки Jupyter
  3. Панды

Преимущества визуализации пространственных данных с помощью карт

Есть несколько явных преимуществ визуализации пространственных данных с помощью карт:

  1. Возможность получить визуальное представление местоположения точек данных, что позволяет нам легко связать точки данных, которые у нас есть, с реальным миром.
  2. Позвольте нам генерировать географическую информацию из имеющихся у нас данных.
Построение пространственных данных на карте позволяет нам получать географические данные, которые мы не можем получить из других форм карт.

Заявление Альберто Каира в его книге Функциональное искусство: введение в информационную графику и визуализацию красноречиво выражает вышеперечисленные моменты:

«Графика не должна упрощать сообщения. Они должны прояснить их, выделить тенденции, раскрыть закономерности и раскрыть реальности, невиданные ранее ».

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

Чрезвычайно сложно, если не невозможно, получить полезную информацию о пространственных данных, используя таблицы в качестве способа представления данных.

прожилок

Чтобы процитировать со страницы Github библиотеки Python Folium:

«Folium основывается на сильных сторонах обработки данных экосистемы Python и сильных сторон библиотеки Leaflet.js. Управляйте своими данными в Python, а затем визуализируйте их на карте Leaflet через Folium ».

Folium - это библиотека Python, которая позволяет нам визуализировать пространственные данные в интерактивном режиме, прямо в среде ноутбуков, которую многие (по крайней мере, я) предпочитают. Библиотека очень интуитивно понятна в использовании, и она предлагает высокую степень интерактивности с низкой кривой обучения. Лучше всего, это всеОткрытый исходный код 🎉

Карта Нью-Йорка и его окрестностей, визуализированная с помощью Folium

Набор данных

Мы будем использовать данные из Набор данных о продолжительности поездки в Нью-Йорк что можно получить из Kaggle, который мы будем использовать в этой статье. Набор данных доступен для загрузки по ссылке выше, и на странице также содержится документация по столбцам, которые существуют в наборе данных.

Набор данных по поездке в такси по Нью-Йорку доступен от Kaggle вместе с документацией, объясняющей данные, доступные в наборе данных

Этот набор данных содержит 2 отдельных файла данных, которыеtrain.csvа такжеtest.csv.Разница между набором данных заключается в том, чтоtrain.csvфайл содержит дополнительный столбец, которыйTRIP_DURATION.Мы не будем фокусироваться на этом в этом примере, поэтому нам не понадобится этот дополнительный столбец.

Вопрос анализа

Мы собираемся задать вопрос-макет, к которому мы будем стремиться в этом анализе (чтобы дать статье ощущение направления)

Город планирует построить остановки такси, места по всему городу, где люди могут забрать / высадить такси и ждать, пока их заберут такси. Эта инициатива направлена ​​на:

  1. Уменьшите количество такси, которые останавливаются на велосипедных дорожках
  2. Облегчение и безопасность для жителей города, чтобы получить такси, особенно в ночное время
  3. Позволить водителям такси знать, куда идти, когда они хотят найти райдеров
  4. Позволить потенциальным гонщикам иметь точку, куда они могут пойти, когда ищут такси.

Вам поручено предложить лучшие места для этих остановок, а также составить представление о количестве поездок по городу в течение дня.

Импорт и предварительная обработка данных

Мы начнем с импорта библиотек, которые мы будем использовать,Пандыа такжеFolium,импортировать все файлы, которые мы будем использовать, удаливTRIP_DURATIONстолбец, который я упомянул в предыдущем разделе, и объединение двух разных файлов в один кадр данных.

Начальные шаги
Предварительный просмотр набора данных, с которым мы будем работать

Снимок экрана выше показывает предварительный просмотр данных, с которыми мы будем работать. Глядя на набор данных, можно сказать, что у нас достаточно много данных о поездке, с которыми мы сможем работать (2M + строки за 6 месяцев данных). Некоторые столбцы, такие как месяц,или другие функции времени могут быть созданы с помощьюDatetimeпакет в Python Кроме того, этот набор данных выглядит готовым для использованияпрожилок(Фолиуму в основном нужны только данные по широте / долготе, чтобы иметь возможность выполнять свои функции)

Генерация месяца из столбца pickup_datetime
Новый фрейм данных, сгенерированный после вышеописанного процесса.

Как вы видите, мы можем получить месяц, неделю, день и час из столбца pickup_datetime (который также преобразуется в столбец datetime вместо объекта). Мы будем использовать эти столбцы в последующих частях нашего анализа.

Визуализация пространственных данных с помощью Folium

Прежде чем мы начнем работать с визуализациями с использованием Folium, необходимо отметить несколько вещей

  1. Карты определяются какfolium.Mapобъект, и мы можем добавить другие объекты фолиума поверхfolium.Mapулучшить / добавить к карте визуализации
  2. прожилокпозволяет пользователям выбирать различные проекции карты. Мы будем использоватьСферическая проекция Меркаторав этой статье, так как мы визуализируем относительно небольшой размер области, и это более часто используемая проекция.
  3. Мы можем использовать различные листы карты для карты, отображаемой в Folium, например, из OpenStreetMap (тот, который я буду использовать в этом уроке), MapBox (Использование плиток из MapBox требует, чтобы вы указали в качестве аргумента ключ API, который у вас есть для лицензии MapBox), и несколько других плиток, которые вы можете видеть из эта папка github repo или эта страница документации

folium.Map ()

Этот метод класса всегда будет первым, что вы выполняете при работе с Folium. Цель этой функции - создать объект карты по умолчанию, который будет отображаться вашей записной книжкой, и объект, который мы будем строить поверх наших визуализаций.

Мы можем начать с нашей визуализации карты, определив объект карты по умолчанию.

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

В этой функции класса есть несколько параметров, которые я обычно использую:

  1. location, этот параметр в основном определяет местоположение по умолчанию, которое будет показано на карте как местоположение в центре.
  2. zoom_start, который определяет уровень увеличения карты по умолчанию
  3. control_scale, включает / отключает масштаб карты для заданного уровня масштабирования. Это то, что иногда может быть полезно для нас, чтобы получить представление о масштабе географической области, на которую мы смотрим.

Есть также много других параметров, которые могут быть установлены в этом методе класса, который вы можете прочитать из Вот,

Тепловая карта()

Мы будем визуализировать данные о поездках, которые у нас есть сейчас, используя методы классаТепловая карта(), Эта функция класса может использоваться для наложения тепловой карты на объект карты, который мы создали ранее.

Использование данных с мая по июнь 2016 года для создания тепловой карты
Визуализация поездок за 2 месяца в виде карты

Из приведенной выше визуализации карты видно, что существует большой спрос на поездки на такси из районов Манхэттена, а также из районов Квинса и Бруклина, которые находятся ближе к Манхэттену. Глядя на карту, мы также видим, что есть места, где спрос вокруг этой области выше, чем вокруг нее.

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

После добавленияfolium.ClickForMarker ()Если вы возьмете объект карты, который мы создали, мы можем щелкнуть на местах внутри самой карты, чтобы добавить маркеры того места, где мы рекомендуем размещать эти остановки такси для фазы 1. Есть некоторые точки, которые расположены в аэропортах в Нью-Йорке, таким образом, мы можем пропустить эти места для фазы 1, так как в аэропортах уже есть места, где водители могут искать такси.

HeatMapWithTime ()

Мы также можем анимировать наши тепловые карты, чтобы изменить отображаемые на них данные на основе определенных измерений (т. Е. Час, месяц), используя метод класса, называемыйHeatMapWithTime (), Этот метод позволит нам анимировать тепловую карту, отображаемую нашим ноутбуком.

Во-первых, нам нужно создать список, содержащий список значений, которые мы хотим построить, сгруппированных по измерению, которое мы хотим использовать (в этом примере мы будем использоватьчаскак измерение).

Генерация списка, который мы будем использовать в качестве значения данных для HeatMapWithTime ()

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

Мы используем данные из предыдущего шага в качестве аргумента данных для метода класса HeatMapWithTime
Глядя на почасовую структуру данных, можно увидеть, что на Манхэттене всегда будет много поездок в течение дня.

Изучив приведенный выше результат, можно увидеть, что в течение дня всегда будет поездка из района Манхэттена, поэтому мы, вероятно, установим много остановок по всему району Манхэттена, поскольку мы увеличиваем масштаб проекта до большего количества остановок по всему маршруту. город

Заключительные замечания

Как показано выше, можно увидеть, что Folium очень интуитивно понятен для использования в качестве способа визуализации пространственных данных. В Folium есть множество встроенных в него функций - от тепловых карт, анимации, маркеров и многих других функций, которые мне не удается описать в этой статье.

Из вышеприведенного примера также видно, что, используя карты вместо других форм визуализации, мы действительно можемвыделять тенденции, раскрывать закономерности и раскрывать реальности, невиданные ранеекогда дело доходит до пространственных данных. Самое главное, это приносит совершенно новый уровеньясностьо данных, которые у нас есть.

Вы можете скачать сопроводительную записную книжку, использованную в этой статье здесь: https://colab.research.google.com/drive/1HJB7UGj7YuUEJi-cKZRAr3O4Dlym2KrP

Ссылки

Функциональное искусство: введение в информационную графику и визуализацию книга, рассказывающая об эффективной визуализации Альберто Каира.

https://python-visualization.github.io/folium/docs-v0.6.0/quickstart.html#Getting-Started Краткое руководство по Folium, невероятно удобное для начала работы с Folium.

http://python-visualization.github.io/folium/docs-v0.5.0/modules.html Страница документации Folium.

https://github.com/python-visualization/folium Страница Folium Github.