April 4, 2024

Библиотеки для визуализации данных

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

Популярные библиотеки для визуализации:

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


Matplotlib

Это самая распространенная библиотека Python для визуализации данных. Каждый, кто интересуется анализом данных, скорее всего, хотя бы раз использовал Matplotlib.

Плюсы:

  • Легко интерпретировать свойства данных:

При анализе данных часто бывает полезно получить быстрый обзор их распределения.

Например, если вы хотите изучить распределение 100 пользователей GitHub с наибольшим количеством подписчиков, обычно достаточно использовать Matplotlib.

  • Универсальность:

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

Минусы:

  • Оформление графиков:

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


Seaborn

Это библиотека визуализации данных на Python, построенная на основе Matplotlib. Она предлагает интерфейс более высокого уровня, упрощая процесс создания графиков.

Плюсы:

  • Более лаконичный и короткий код:

Seaborn предоставляет высокоуровневый интерфейс для создания графиков, аналогичных Matplotlib. Вы можете построить визуализации с меньшим числом строк кода и более приятным визуальным оформлением. Например, используя те же данные, что и раньше, мы можем создать тепловую карту без явного задания меток для x и y:

  • Улучшенный визуал популярных графиков:

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

Минусы:

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


Plotly

Библиотека, обеспечивающая простой способ создания интерактивных и высококачественных графиков. Она предлагает множество разнообразных графиков, аналогичных графикам из Matplotlib и Seaborn, включая линейные графики, диаграммы рассеяния, гистограммы и многое другое.

Плюсы:

  • Схожесть с R:

Если вы ранее освоили построение графиков в R, и вам не хватает его возможностей, Plotly станет для вас доступной альтернативой. Библиотека позволяет добиться такого же качества графиков с помощью Python. Особенно выделяется Plotly Express, позволяющая создавать впечатляющие графики с помощью всего одной строки кода на Python. Например:

  • Создание интерактивных графиков:

Plotly отлично справляется с созданием интерактивных графиков, которые не только повышают визуальную привлекательность, но и позволяют более детально изучить данные. Пример гистограммы, созданной ранее, с помощью Plotly:

  • Простота в создании сложных графиков:

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


Altair

Это мощная библиотека декларативной статистической визуализации для Python, основанная на Vega-Lite. Она отлично подходит для создания графиков, требующих сложных статистических преобразований.

Плюсы:

  • Лаконичный синтаксис:

В Altair используется интуитивно понятный синтаксис для создания визуализаций. Вам нужно лишь указать связи между столбцами данных и каналами кодирования, а остальное построение графиков выполняется автоматически. Например, чтобы подсчитать количество людей в каждом классе на основе датасета «Титаник»:

titanic = sns.load_dataset("titanic")

alt.Chart(titanic).mark_bar(color='purple').encode(alt.X("class"), y="count()")

  • Простая трансформация данных:

Altair позволяет легко выполнять преобразования данных при создании графиков. Например, если вы хотите найти средний возраст каждого пола в «Титанике», вы можете выполнить преобразование в самом коде:

mean_age = (

alt.Chart(titanic)

.mark_bar(color='purple')

.encode(x="sex:N", y="mean_age:Q")

.transform_aggregate(mean_age="mean(age)", groupby=["sex"])

)

  • Создание связанных графиков:

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

Минусы:

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


Bokeh

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

Плюсы:

  • Интерактивная версия Matplotlib:

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

И с помощью Bokeh:

  • Связь между графиками:

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

Минусы:

Bokeh часто требует больше кода для построения графика, чем Seaborn, Altair или Plotly. Например, чтобы создать график с использованием данных «Титаника», помимо необходимости предварительного преобразования данных, также нужно задать ширину столбика и цвет, если мы хотим, чтобы график выглядел визуально привлекательно.

Без настроек ширины график выглядел бы следующим образом:

С преобразованием размеров:


Folium

Это библиотека, которая упрощает процесс визуализации данных на интерактивной карте. Библиотека предоставляет встроенные наборы карт из OpenStreetMap, Mapbox и Stamen.

Плюсы:

  • Простота создания карты с маркерами:

По сравнению Plotly, Altair и Bokeh, Folium предлагает более простой подход для создания интерактивных карт, базируясь на общедоступных картах. Это позволяет получить результат, схожий с Яндекс Картами, с минимальным количеством кода. В пункте про Plotly был приведен пример визуализации местоположения пользователей.

Улучшенный вариант этой карты с помощью Folium:

  • Возможность добавлять предполагаемое местоположение:

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

  • Плагины:

Folium предлагает различные плагины и дополнения, которые можно использовать для ваших карт, включая плагин для Altair. Например, если мы хотим визуализировать тепловую карту общего количества звезд для пользователей Github по всему миру и определить области с большим количеством лучших пользователей и звезд, плагин Folium heatmap позволит нам этого добиться: