Визуализация данных с помощью Altair (часть 2)

Open in Colab


Подписка на онлайн-обучение telegram

Биннинг и агрегация

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

Group-By в Pandas

Одной из ключевых операций в исследовании данных является группировка (group-by), подробно описанная в статье. Короче говоря, группировка разбивает данные в соответствии с некоторым условием, применяет некоторую агрегацию в этих группах, а затем объединяет данные обратно вместе:

Split Apply Combine figure Источник картинки

Что касается данных об автомобилях, вы можете разделить их по происхождению (Origin), вычислить среднее значение миль на галлон (miles per gallon), а затем объединить результаты.

В Pandas операция выглядит так:

В Altair такой вид "разделения-применения-комбинирования" (split-apply-combine) может быть выполнен путем передачи оператора агрегирования внутри строки в любую кодировку (encoding).

Например, мы можем отобразить график, представляющий вышеуказанную агрегацию, следующим образом:

Обратите внимание, что группировка выполняется неявно внутри кодировок: здесь мы группируем только по происхождению (Origin), а затем вычисляем среднее значение по каждой группе.

Одномерные биннинги: гистограммы

Одно из наиболее распространенных применений биннинга - создание гистограмм. Например, вот гистограмма миль на галлон (miles per gallon):

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

Например, если мы присвоим цвету (color) количество миль на галлон (miles per gallon), то получим следующее представление данных:

Это дает лучшее представление о доле MPG (миль на галлон) в каждой стране.

При желании мы можем нормализовать количество по оси x, чтобы напрямую сравнивать пропорции:

Видим, что более половины автомобилей в США относятся к категории "с низким пробегом" (low mileage).

Снова изменив кодировку (encoding), давайте сопоставим цвет с количеством color='count()':

Видим набор данных, похожий на тепловую карту!

Это одна из прекрасных особенностей Altair: через грамматику API он показывает отношения между разными типами диаграмм, например, двухмерная тепловая карта кодирует те же данные, что и гистограмма с накоплением (stacked)!

Прочие агрегаты

Агрегаты (aggregates) также могут использоваться с данными, которые неявно объединены в группы. Например, посмотрите на этот график MPG (миль на галлон) с течением времени: