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

Open in Colab


telegram

Источник картинки

Чтобы не отставать от последних трендов в области визуализации, я недавно услышал об Altair, который называет себя "библиотекой декларативной статистической визуализации для Python".

Оригинал статьи Криса тут

Меня особенно заинтересовало то, что он разработан Брайаном Грейнджером (Brian Granger) и Джейком Вандерпласом (Jake Vanderplas). Брайан является основным разработчиком проекта IPython и очень активен в научном сообществе Python. Джейк также активен в научном сообществе питонистов и написал прекрасную книгу "Python Data Science Handbook". Оба эти человека чрезвычайно опытны и хорошо осведомлены о Python и различных инструментах в его научной экосистеме. Из-за их прошлого мне было очень любопытно посмотреть, как они подошли к этой проблеме.

Общее описание

Одна из уникальных концепций дизайна Altair заключается в том, что он использует спецификацию Vega-Lite для создания "красивых и эффективных визуализаций с минимальным количеством кода".

Vega-Lite - это грамматика высокого уровня интерактивной графики. Она предоставляет краткий декларативный синтаксис JSON для создания выразительного набора визуализаций для анализа и представления данных.

Что это значит?

Altair предоставляет Python API для декларативного построения статистических визуализаций.

Под статистической визуализацией понимается:

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

Прежде чем двигаться дальше, я хотел бы выделить еще один уникальный аспект Altair, связанный с ожидаемым форматом данных. Как описано выше, Altair ожидает, что все данные будут в аккуратном (tidy) формате.

Общая идея заключается в том, что вы преобразуете свои данные в соответствующий формат, а затем используете API Altair для выполнения различных группировок или других методов сводки данных для вашей конкретной ситуации. Новым пользователям может потребоваться некоторое время, чтобы привыкнуть к этому. Тем не менее, я думаю, что в долгосрочной перспективе это хороший навык, и вложения в обработку данных (при необходимости) окупятся, в конце концов, путем обеспечения согласованного процесса визуализации данных.

Обзор возможностей Altair

Оригинал документации тут

Установим необходимые модули:

Начнем с демонстрации возможностей Altair.

В этом разделе поверхностно рассматриваются многие концепции, например, data, marks, encodings, aggregation, data types, selections и т. д. Позже мы вернемся к более глубокому рассмотрению каждой из них, поэтому не беспокойтесь, если покажется, что все идет слишком быстро!

Altair строится на спецификации Vega-Lite и вся терминология взята оттуда.

Изучение набора данных автомобилей

Начнем с импорта пакета Altair:

Теперь воспользуемся пакетом vega_datasets, чтобы загрузить набор данных:

Используя Altair, можем исследовать эти данные.

Самая простая диаграмма (chart) содержит набор данных вместе с меткой (mark) для представления каждой строки:

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

Чтобы сделать ее более интересной, необходимо закодировать (encode) столбцы данных в визуальные элементы графика (plot), например, положение x, положение y, size, color и т. д.

Давайте закодируем мили на галлон (miles per gallon) по оси x с помощью метода encode():

Немного лучше, но point (точечная) маркировка, вероятно, не самая лучшая для такой одномерной диаграммы.

Вместо этого попробуем задать tick маркировку:

Можем развернуть в 2D-диаграмму, также закодировав значение y.

Вернемся к использованию point (точечной) маркировки и поместим Horsepower (мощность в лошадиных силах) по оси y:

Одна из самых приятных особенностей Altair - это грамматика взаимодействия, которую он предоставляет.

Самый простой вид взаимодействия - это возможность панорамировать (pan) и масштабировать (zoom) диаграммы; их можно включить с помощью метода interactive():

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

Позже мы увидим и другие варианты взаимодействия.

Двухмерный график (2D plot) позволяет кодировать два измерения данных.

Давайте посмотрим, как использовать цвет (color) для кодирования третьего измерения (Origin):