{"id":14268,"url":"\/distributions\/14268\/click?bit=1&hash=1e3309842e8b07895e75261917827295839cd5d4d57d48f0ca524f3f535a7946","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c \u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f71e1caf-7964-5525-98be-104bb436cb54"}

Как изменить визуализацию, не изменяя при этом себе. PyDeck

PyDeck - библиотека Python с открытым кодом. Она позволяет с лёгкостью создавать гибко настраиваемые графики, гистограммы и другие средства визуализации данных. Всего за несколько минут и пару строк кода можно создать стильный график.

PyDeck позволяет создавать слои, на которых мы отображаем данные. Например, на одном слое мы можем отобразить данные за один период, а на другом – за другой период. При этом мы можем изобразить их разным цветом, размером и формой.

Одно из главных преимуществ – визуализация данных на карте нашей планеты.

Перед тем как импортировать библиотеку себе в приложение, не забываем её установить, для этого необходимо прописать в консоли следующее:

pip install pydeck

Для примера использования библиотеки PyDeck необходим датасет. Я выбрал следующий: “Breweries & Brew Pubs in the USA”. В нём отображены все пабы и пивные магазины в городах США.

Скачать данный датасет можно по ссылке https://data.world/datafiniti/breweries-brew-pubs-in-the-usa

Выглядит он следующим образом:

Здесь мы можем увидеть 7000 строк, содержащих названия городов, категорию заведений и т.д. Нас же интересует колонка “city”, где указан город, в котором расположен данный объект.

Для построения карты нам необходимы координаты, получить их можно из датасета, содержащего все города США и их координаты.

Найти такой можно по ссылке:

Перейдем к коду.

Импортируем необходимые библиотеки:

import pydeck as pdk import pandas as pd

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

data = pd.read_csv('8260_1.csv') cities = pd.read_csv('uscities.csv')[[‘city’, ‘lat’, ‘lng’]] data = pd.merge(data,cities, on ='city')

Далее переходим непосредственно библиотеке PyDeck.

Её главная особенность – наличие слоёв. Их можно создавать столько, сколько нам необходимо для задачи. Для нашего же случая, достаточно использовать один.

Итак, начнём.

layer = pdk.Layer( #выбираем необходимый слой для нашей задачи. Данный слой автоматически подсчитывает количество точек с одинаковой координатой и выводит данные, визуально различая их по количеству совпадений (размер и цвет) 'HexagonLayer', #передаем наш dataframe data, #указываем в каких столбцах содержатся данные о координатах объекта get_position='[lon, lat]', auto_highlight=True, #параметр, отвечающий за инкремент длины столбца значения на карте elevation_scale=75, pickable=True, #диапазон длинны столбцов значений на карте elevation_range=[0, 3000], extruded=True)

Далее необходимо настроить карту так, чтобы камера при запуске указывала на США:

# Set the viewport location view_state = pdk.ViewState( #координаты longitude=-73.1, latitude=40.1, zoom=6, #наклон камеры pitch=40.5)

Готово, осталось всего лишь создать экземпляр класса Deck из библиотеки PyDeck и передать в него данные:

r = pdk.Deck( #передаем слои (в нашем случае он один) layers=[layer], initial_view_state=view_state, #указываем подсказки, которые будут отображаться, при наведении курсора на объекты. tooltip={ 'html': '<b>Elevation Value:</b> {elevationValue}', 'style': { ‘color': 'white' } } )

Все готово, осталось сохранить всё в html-страницу:

r.to_html('1.html')

Открываем файл в браузере и видим результат:

Приблизим карту:

Как видно на странице, чем больше объектов – пабов и пивных магазинов в одном городе – тем больше и столбец.

Данный тип графиков позволяет наглядным образом отобразить места с наименьшими и наибольшими значениями какого-то определенного показателя как на карте любой страны, так и на полной карте нашей планеты. Как вариант, можно отобразить картину актуальной на сегодняшний день темы заболеваний COVID-19. График покажет количество заражений в каждой стране, а также наглядно отобразит страны с наибольшими и наименьшими показателями.

С другими типами слоёв данной библиотеки можно ознакомиться по ссылке: https://deckgl.readthedocs.io/en/latest/

0
2 комментария
NTA
Автор

Добрый день. Пример, который подошел бы для наглядной иллюстрации, был выбран рандомно. Основной критерий, чтобы выборка была в пределах одной страны в разных городах или штатах.

Ответить
Развернуть ветку
Alexey Remizov

Другого примера не было?

Ответить
Развернуть ветку
-1 комментариев
Раскрывать всегда