Зарегистрируйтесь, чтобы продолжить обучение

GeoMap и точечная диаграмма Визуализация в Superset

Продолжаем изучать продвинутую аналитику с использованием Apache Superset. В этом уроке мы познакомимся с двумя новыми типами визаулизациями: это точечные графики (Scatterplot) и это карты мира (World Map).

Scatterplot

Начнем с точечных графиков. Для работы нам понадобится наша база PostgreSQL с таблицами продаж. А для карт будем использовать тестовый документ, который уже встроен в демо-воркспейсы Superset – так будет проще.

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

Создадим такой график. Заходим в SQL Lab и пишем запрос:

SELECT
    c.age,
    (p.price * s.quantity) AS purchase_amount,
    c.customer_id,
    p.name AS product_name
FROM sales s
JOIN customers c ON s.customer_id = c.customer_id
JOIN products p ON s.product_id = p.product_id
ORDER BY c.age;

Что мы здесь делаем? Соединяем таблицы продаж, клиентов и продуктов. Нам нужны сумма продажи, возраст покупателя и название продукта.

После выполнения запроса нажимаем Create Chart. Важный момент – сначала сохраняем наш запрос как датасет. Теперь выбираем тип графика Scatterplot.

Настраиваем график:

  • По горизонтали (x-axis) ставим возраст
  • В метрику (metrics) добавляем purchase_amount с агрегацией SUM
  • Нажимаем Update Chart

Scatterplot

Что интересного видим на графике? Во-первых, больше всего покупок совершили покупатели возраста 21 год. Во-вторых, в остальном, за редкими выбросами, объемы продаж среди всех возрастов одинаковы.

Давайте сделаем график интереснее – добавим разбивку по продуктам. Просто перетаскиваем product_name в dimension. Теперь для каждой даты у нас несколько точек разного цвета – каждая для своего продукта. Правда, если продуктов много, график может стать немного запутанным. В таком случае можно использовать не названия продуктов, а категории – будет нагляднее.

Scatterplot2

World Map

Теперь давайте посмотрим на карты мира. Это очень эффектный способ визуализации, когда нужно показать данные в разрезе стран. У карт всего три основных параметра:

  1. Country column – поле с названиями стран (важно: на английском и в формате, который понимает Superset)
  2. Metric – значение, которое мы хотим показать для каждой страны
  3. Show bubbles – можно добавить кружки разного размера, показывающие величину значения

Давайте посмотрим на примере данных о вакцинации COVID-19. В демо-данных есть таблица COVID_vaccines. Выбираем из нее страну (country_name) и количество клинических проб вакцины - COUNT(*).

World Map

Что интересного показывает карта? В США было проведено 63 пробы – самый большой кружок, в Китае 20, в Канаде 14, в Индии, Турции и России по 12.

Такие карты особенно полезны, когда работаешь с международной компанией и нужно показать:

  • Распределение филиальной сети
  • Выручку по странам
  • Долю прибыли по регионам

Иногда пользователям проще работать с конкретными цифрами, но для презентаций карты – отличный инструмент. Они наглядно показывают географическое распределение данных и очень эффектно выглядят.

Выводы

Сегодня мы научились работать с двумя новыми типами визуализаций в Apache Superset: точечными графиками и картами мира. Точечные графики помогают найти зависимости и тенденции в данных, а карты мира – показать географическое распределение. Теперь вы можете использовать эти инструменты для анализа данных и принятия обоснованных решений.


Самостоятельная работа

В уроке «Подключение к данным» мы подключили базу flightsdb. В ней содержатся данные о авиаперевозках за два месяца — с 16 июля по 14 сентября 2017 года.

Схема базы данных выглядит так:

Schema

Задание № 1

В этом задании вам предстоит визуализировать на карте маршруты из Домодедово (код аэропорта — DME). Для этого мы воспользуемся графиком DECK.GL ARC, входящим в Preset.

Нажмите сюда, чтобы увидеть подсказку

Чтобы составить графики, используйте координаты аэропортов вылета и прилета. Они хранятся в поле coordinates таблицы airport_data. В этом поле вы найдете два значения:

  • Долгота — longitude
  • Широта — latitude

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

Чтобы получить необходимые данные, в SQL Lab нужно использовать следующий запрос:

SELECT
  ad1.coordinates[0] AS departure_longitude,
  ad1.coordinates[1] AS departure_latitude,
  ad2.coordinates[0] AS arrival_longitude,
  ad2.coordinates[1] AS arrival_latitude
FROM
  flights AS f
INNER JOIN
  airports_data AS ad1
  ON f.departure_airport = ad1.airport_code
INNER JOIN
  airports_data AS ad2
  ON f.arrival_airport = ad2.airport_code
WHERE
  f.departure_airport = 'DME';

Чтобы сделать визуализацию, сохраните полученные данные как датасет. Затем перейдите в меню CREATE CHART. Выберите DECK.GL ARC и следующие данные для визуализации:

  • START LONGITUDE & LATITUDEdeparture_longitude / departure_latitude
  • END LONGITUDE & LATITUDEarrival_longitude / arrival_latitude

Результат будет выглядеть так:

Result


Дополнительные материалы

  1. Документация по точечным диаграммам

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff