Библиотеки для визуализации данных
Визуализация данных — один из основных этапов в работе любого аналитика данных. Если вы только начинаете осваивать создание графиков с помощью 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, и вам не хватает его возможностей, 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 позволяет легко выполнять преобразования данных при создании графиков. Например, если вы хотите найти средний возраст каждого пола в «Титанике», вы можете выполнить преобразование в самом коде:
.encode(x="sex:N", y="mean_age:Q")
.transform_aggregate(mean_age="mean(age)", groupby=["sex"])
Altair предоставляет возможности для объединения нескольких графиков. Например, для визуализации количества людей в каждом классе в пределах выбранного интервала на диаграмме рассеяния:
Altair предоставляет не такие расширенные возможности стилизации графиков, как Seaborn или Plotly. Более того, в библиотеке существуют ограничения при работе с большими наборами данных.
Bokeh
Это мощная библиотека для интерактивный визуализации данных с открытым исходным кодом, которая позволяет визуализировать данные для веб-приложений.
Bokeh является похожей на Matplotlib библиотекой, дополненной возможностями создания интерактивных визуализаций. Bokeh предлагает как высокоуровневые, так и низкоуровневые интерфейсы. С помощью Bokeh можно создавать сложные графики, аналогичные Matplotlib, с использованием меньшего количества строк кода. Например, круговой график с помощью Matplotlib:
С помощью Bokeh легко устанавливать связи между графиками. Изменения, внесенные в один график, могут быть автоматически отражены в другом графике с аналогичными переменными. Эта функция позволяет исследовать взаимосвязи между несколькими графиками. Например, если вы создали два графика рядом друг с другом и хотите проследить их взаимосвязь:
Bokeh часто требует больше кода для построения графика, чем Seaborn, Altair или Plotly. Например, чтобы создать график с использованием данных «Титаника», помимо необходимости предварительного преобразования данных, также нужно задать ширину столбика и цвет, если мы хотим, чтобы график выглядел визуально привлекательно.
Без настроек ширины график выглядел бы следующим образом:
Folium
Это библиотека, которая упрощает процесс визуализации данных на интерактивной карте. Библиотека предоставляет встроенные наборы карт из OpenStreetMap, Mapbox и Stamen.
По сравнению Plotly, Altair и Bokeh, Folium предлагает более простой подход для создания интерактивных карт, базируясь на общедоступных картах. Это позволяет получить результат, схожий с Яндекс Картами, с минимальным количеством кода. В пункте про Plotly был приведен пример визуализации местоположения пользователей.
Улучшенный вариант этой карты с помощью Folium:
Folium позволяет легко добавлять потенциальные местоположения других пользователей с помощью маркеров.
Folium предлагает различные плагины и дополнения, которые можно использовать для ваших карт, включая плагин для Altair. Например, если мы хотим визуализировать тепловую карту общего количества звезд для пользователей Github по всему миру и определить области с большим количеством лучших пользователей и звезд, плагин Folium heatmap позволит нам этого добиться: