Перейти к содержимому

Графика на python 3 какая библиотека

  • автор:

Введение в Python 3 + matplotlib

Библиотека matplotlib — это библиотека двумерной графики для языка программирования python с помощью которой можно создавать высококачественные рисунки различных форматов.

Для начала работы вам необходимо иметь установленный Python 3 и IDE. Я использую Visual Studio Code + Python 3!

Установка библиотеку «matplotlib».
Существует несколько способов это сделать, я покажу как это сделать при помощи pip.
1) Запускаем командную строку от имени Администратора:

2) Последовательно прописываем следующие команды:

python -m pip install -U pip python -m pip install -U matplotlib

На этом установка завершена!

import matplotlib.pyplot as plt # Подключаем библиотеку plt.plot([2, 4, 5, 6, 8], [1, 3, 1.5, 4.5, 3.5]) # Координаты [x],[y] plt.show() # Вызываем окно с нашим графиком

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

Теперь давайте немного модифицируем нашу программу.

import matplotlib.pyplot as plt # Подключаем библиотеку import numpy as np # Подключаем библиотеку numpy x = np.arange(0, 4*np.pi, 0.01) # arange() - возвращает одномерный массив с равномерно разнесенными значениями внутри заданного интервала # arange(начало, конец, шаг) sin = np.sin(x) # Вызываем функцию sin которая зависит plt.plot(x, sin) # Рисуем функцию sin plt.show() # Вызываем окно с нашим графиком

Теперь немного оформим наш график:

import matplotlib.pyplot as plt # Подключаем библиотеку import numpy as np # Подключаем библиотеку numpy x = np.arange(0, 4*np.pi, 0.01) # arange() - возвращает одномерный массив с равномерно разнесенными значениями внутри заданного интервала # arange(начало, конец, шаг) sin = np.sin(x) # Вызываем функцию sin которая зависит plt.plot(x, sin) # Рисуем функцию sin plt.title('График функции sin на Python 3 matplotlib') # Оглавление программы plt.legend(['sin(x)']) # Легенда plt.xlabel('Ось X') # Надпись возле оси X plt.ylabel('Ось Y') # Надпись возле оси Y plt.show() # Вызываем окно с нашим графиком

Топ 6 библиотек Python для визуализации: какую и когда лучше использовать?

Всех желающих приглашаем на открытый онлайн-интенсив «Data Science — это проще, чем кажется». Поговорим об истории и основных вехах в развитии ИИ, вы узнаете, какие задачи решает DS и чем занимается ML. И уже на первом занятии вы сможете научить компьютер определять, что изображено на картинке. А именно, вы попробуете обучить свою первую модель машинного обучения для решения задачи классификации изображений. Поверьте, это проще, чем кажется!

Не знаете, какой инструмент визуализации использовать? В этой статье мы подробно расскажем о плюсах и минусах каждой библиотеки.

Это руководство было дополнено несколькими подробными примерами. Вы также можете отслеживать актуальные версии этой статьи здесь.

Мотивация

Если вы только собираетесь начать работу с визуализацией в Python, количество библиотек и решений вас определенно поразит:

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

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

Интерактивность

Хотите ли вы, чтобы ваша визуализация была интерактивной?

Визуализация в некоторых библиотеках, таких как Matplotlib, является простым статичным изображением, что хорошо подходит для объяснения концепций (в документе, на слайдах или в презентации).

Другие библиотеки, такие как Altair, Bokeh и Plotly, позволяют создавать интерактивные графики, которые пользователи могут изучать, взаимодействуя с ними.

Синтаксис и гибкость

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

Тип данных и визуализации

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

Данные

Чтобы было проще сравнивать библиотеки, здесь представлены реальные данные с Github из этой статьи:

I Scraped more than 1k Top Machine Learning Github Profiles and this is what I Found

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

Вы можете скачать файл csv здесь, либо получите данные напрямую из Datapane Blob.

import datapane as dp dp.Blob.get(name='github_data', owner='khuyentran1401').download_df()

Не забудьте залогиниться со своим токеном авторизации в Datapane, если вы хотите использовать Blob. Это займет менее минуты.

Matplotlib

Matplotlib, вероятно, является самой популярной библиотекой Python для визуализации данных. Все, кто интересуется data science, наверняка хоть раз сталкивались с Matplotlib.

Плюсы
  1. Четко отображены свойства данных

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

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

import matplotlib.pyplot as plt top_followers = new_profile.sort_values(by='followers', axis=0, ascending=False)[:100] fig = plt.figure() plt.bar(top_followers.user_name, top_followers.followers)

Даже что-то вроде этого:

fig = plt.figure() plt.text(0.6, 0.7, "learning", size=40, rotation=20., ha="center", va="center", bbox=dict(boxstyle="round", ec=(1., 0.5, 0.5), fc=(1., 0.8, 0.8), ) ) plt.text(0.55, 0.6, "machine", size=40, rotation=-25., ha="right", va="top", bbox=dict(boxstyle="square", ec=(1., 0.5, 0.5), fc=(1., 0.8, 0.8), ) ) plt.show()
Минусы

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

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

correlation = new_profile.corr() fig, ax = plt.subplots() im = plt.imshow(correlation) ax.set_xticklabels(correlation.columns) ax.set_yticklabels(correlation.columns) plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor")

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

Seaborn

Seaborn — это библиотека Python для визуализации данных, построенная на базе Matplotlib. Она более высокоуровневая, что упрощает ее использование.

Плюсы

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

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

correlation = new_profile.corr() sns.heatmap(correlation, annot=True)

Мы получаем лучший график пользовательской активности без возни x и y!

2. Делает стандартные графики красивее

Многие люди выбирают seaborn для создания широко используемых графиков, таких как столбчатые и прямоугольные диаграммы, расчетные графики, гистограммы и т. д., но не только потому, что это потребует меньше кода, они еще и визуально приятнее. Как видно на примере выше, цвета выглядят лучше, чем цвета по умолчанию в Matplotlib.

sns.set(style="darkgrid") titanic = sns.load_dataset("titanic") ax = sns.countplot(x="class", data=titanic)
Минусы

Seaborn более ограничен и не имеет такой широкой коллекции графиков, как matplotlib.

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

Plotly

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

Плюсы

Если вы поклонник графиков в R и вам не хватает его функционала при переходе на Python, Plotly даст вам такое же качество графиков с использованием Python!

Мой любимая версия — Plotly Express, потому что с ней можно легко и быстро создавать отличные графики одной строчкой в Python.

import plotly.express as px fig = px.scatter(new_profile[:100], x='followers', y='total_stars', color='forks', size='contribution') fig.show()

2. Простота создания интерактивных графиков

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

Помните столбчатую диаграмму, которую мы показывали ранее в matplotlib? Давайте посмотрим, как она получится с помощью Plotly

import plotly.express as px top_followers = new_profile.sort_values(by='followers', axis=0, ascending=False)[:100] fig = px.bar(top_followers, x='user_name', y='followers', ) fig.show()

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

3. Легко делать сложные графики

С помощью Plotly достаточно легко создавать сложные графики.

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

import plotly.express as px import datapane as dp location_df = dp.Blob.get(name='location_df', owner='khuyentran1401').download_df() m = px.scatter_geo(location_df, lat='latitude', lon='longitude', color='total_stars', size='forks', hover_data=['user_name','followers'], title='Locations of Top Users') m.show()

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

Вывод: Plotly отлично подходит для создания интерактивных и качественных графиков при помощи всего нескольких строк кода.

Altair

Altair — это библиотека Python декларативной статистической визуализации, которая основана на vega-lite, что идеально подходит для графиков, требующих большого количества статистических преобразований.

Плюсы

1. Простая грамматика визуализации

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

Например, для данных о Титанике выше мы хотели бы подсчитать количество людей в каждом классе. Все, что нам нужно, это использовать count() в y_axis

import seaborn as sns import altair as alt titanic = sns.load_dataset("titanic") alt.Chart(titanic).mark_bar().encode( alt.X('class'), y='count()' )

2. Простота преобразования данных

Altair также упрощает преобразование данных при создании диаграммы.

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

hireable = alt.Chart(titanic).mark_bar().encode( x='sex:N', y='mean_age:Q' ).transform_aggregate( mean_age='mean(age)', groupby=['sex']) hireable

Логика здесь состоит в том, чтобы использовать transform_aggregate() для взятия среднего значения возраста ( mean(age) ) каждого пола ( groupby=[‘sex’] ) и сохранить его в переменной mean_age ). За ось Y мы берем переменную.

Мы также можем убедиться, что класс — это номинальные данные (категорийные данные в произвольном порядке), используя :N , или что mean_age — это количественные данные (меры значений, такие как числа), используя :Q .

Полный список преобразований данных можно найти здесь.

3. Связывание нескольких графиков

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

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

brush = alt.selection(type='interval') points = alt.Chart(titanic).mark_point().encode( x='age:Q', y='fare:Q', color=alt.condition(brush, 'class:N', alt.value('lightgray')) ).add_selection( brush ) bars = alt.Chart(titanic).mark_bar().encode( y='class:N', color='class:N', x = 'count(class):Q' ).transform_filter( brush ) points & bars

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

Минусы

Если вы не задаете пользовательский стиль, простые диаграммы, такие как, например, столбчатые, не будут оформлены стилистически так же хорошо, как в seaborn или Plotly. Altair также не рекомендует использовать наборы данных с более чем 5000 экземплярами и рекомендует вместо этого агрегировать данные перед визуализацией.

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

Bokeh

Bokeh — это интерактивная библиотека для визуализации, предназначенная для презентации данных в браузерах.

Плюсы
  1. Интерактивная версия Matplotlib

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

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

Например, круговой график Matplotlib,

import matplotlib.pyplot as plt fig, ax = plt.subplots() x = [1, 2, 3, 4, 5] y = [2, 5, 8, 2, 7] for x,y in zip(x,y): ax.add_patch(plt.Circle((x, y), 0.5, edgecolor = "#f03b20",facecolor='#9ebcda', alpha=0.8)) #Use adjustable='box-forced' to make the plot area square-shaped as well. ax.set_aspect('equal', adjustable='datalim') ax.set_xbound(3, 4) ax.plot() #Causes an autoscale update. plt.show()

который, в Bokeh, может быть создан с лучшим разрешением и функциональностью:

from bokeh.io import output_file, show from bokeh.models import Circle from bokeh.plotting import figure reset_output() output_notebook() plot = figure(plot_width=400, plot_height=400, tools="tap", title="Select a circle") renderer = plot.circle([1, 2, 3, 4, 5], [2, 5, 8, 2, 7], size=50) selected_circle = Circle(fill_alpha=1, fill_color="firebrick", line_color=None) nonselected_circle = Circle(fill_alpha=0.2, fill_color="blue", line_color="firebrick") renderer.selection_glyph = selected_circle renderer.nonselection_glyph = nonselected_circle show(plot)

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

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

Например, если мы создаем 3 графика рядом и хотим наблюдать их взаимосвязь, мы можем связанное закрашивание

from bokeh.layouts import gridplot, row from bokeh.models import ColumnDataSource reset_output() output_notebook() source = ColumnDataSource(new_profile) TOOLS = "box_select,lasso_select,help" TOOLTIPS = [('user', '@user_name'), ('followers', '@followers'), ('following', '@following'), ('forks', '@forks'), ('contribution', '@contribution')] s1 = figure(tooltips=TOOLTIPS, plot_width=300, plot_height=300, title=None, tools=TOOLS) s1.circle(x='followers', y='following', source=source) s2 = figure(tooltips=TOOLTIPS, plot_width=300, plot_height=300, title=None, tools=TOOLS) s2.circle(x='followers', y='forks', source=source) s3 = figure(tooltips=TOOLTIPS, plot_width=300, plot_height=300, title=None, tools=TOOLS) s3.circle(x='followers', y='contribution', source=source) p = gridplot([[s1,s2,s3]]) show(p)
Минусы

Поскольку Bokeh — это библиотека, которая имеет интерфейс среднего уровня, она часто требует меньше кода, чем Matplotlib, но требует больше кода для создания того же графика, чем Seaborn, Altair или Plotly.

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

Если мы не добавим ширину столбцов графика, то он будет выглядеть так:

from bokeh.transform import factor_cmap from bokeh.palettes import Spectral6 p = figure(x_range=list(titanic_groupby['class'])) p.vbar(x='class', top='survived', source = titanic_groupby, fill_color=factor_cmap('class', palette=Spectral6, factors=list(titanic_groupby['class']) )) show(p)

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

from bokeh.transform import factor_cmap from bokeh.palettes import Spectral6 p = figure(x_range=list(titanic_groupby['class'])) p.vbar(x='class', top='survived', width=0.9, source = titanic_groupby, fill_color=factor_cmap('class', palette=Spectral6, factors=list(titanic_groupby['class']) )) show(p)

Если вы хотите создать красивую столбчатую диаграмму, используя меньшее количеством кода, то для вас это может быть недостатком Bokeh по сравнению с другими библиотеками

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

Folium

Folium позволяет легко визуализировать данные на интерактивной встраиваемой карте. В библиотеке есть несколько встроенных тайлсетов из OpenStreetMap , Mapbox и Stamen

Плюсы
  1. Очень легко создавать карты с маркерами

Несмотря на то, что Plotly, Altair и Bokeh также позволяют нам создавать карты, Folium использует открытую уличную карту, что-то близкое к Google Map, с помощью минимального количества кода

Помните, как мы создавали карту для визуализации местоположения пользователей Github с помощью Plotly? Мы могли бы сделать карту еще лучше с помощью Folium:

import folium # Load data location_df = dp.Blob.get(name='location_df', owner='khuyentran1401').download_df() # Save latitudes, longitudes, and locations' names in a list lats = location_df['latitude'] lons = location_df['longitude'] names = location_df['location'] # Create a map with an initial location m = folium.Map(location=[lats[0], lons[0]]) for lat, lon, name in zip(lats, lons, names): # Create marker with other locations folium.Marker(location=[lat, lon], popup= name, icon=folium.Icon(color='green') ).add_to(m) m

2. Добавление потенциального местоположения

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

# Code to generate map here #. # Enable adding more locations in the map m = m.add_child(folium.ClickForMarker(popup='Potential Location'))

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

3. Плагины

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

from folium.plugins import HeatMap m = folium.Map(location=[lats[0], lons[0]]) HeatMap(data=location_df[['latitude', 'longitude', 'total_stars']]).add_to(m)

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

Вывод: Folium позволяет создавать интерактивную карту в несколько строк кода. Он дает вам ощущения близкие к использованию Google Map.

Заключение

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

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

Не стесняйтесь форкать и использовать код для этой статьи из этого репозитория на Github.

Мне нравится писать об основных концепциях data science и пробовать различные алгоритмы и инструменты анализа данных. Вы можете связаться со мной в LinkedIn и Twitter.

Отметьте этот репозиторий, если хотите изучить код всех статей, которые я писал. Следите за мной на Medium, чтобы быть в курсе моих последних статей по data science.

  • machinelearning
  • data science
  • классификация изображений
  • python
  • data visualization
  • data analysis

7 самых популярных Python-библиотек для визуализации данных в Data Science

Визуализация является важнейшим инструментов Data Science, поскольку помогает наиболее полно понять данные. Сегодня мы поговорим о 7 популярных библиотеках визуализации данных для Python.

Статические и интерактивные диаграммы

Прежде чем мы приступим к разбору библиотек, разберемся с основными видами диаграмм, которые бывают статические и интерактивные.
Статические диаграммы — это графики, которые не изменяются, а представляют собой обычные картинки. Однако, с интерактивными диаграммами можно взаимодействовать, изменяя их в режиме онлайн, поэтому такие диаграммы часто используют JavaScript и отображаются только в браузере или в Jupyter.
Интерактивные диаграммы обладают приятным видом и удобны для длительного исследования данных, но могут иметь сложный интерфейс, который придётся изучить. Справедливости ради, отметим, что библиотеки Matplotlib и Seaborn производят статические диаграммы, но в Jupyter Notebook с дополнительными настройками они могут стать интерактивными.

1. Matplotlib

Самая используемая Python-библиотека для визуализации — это Matplotlib . Она очень проста, богата на инструменты и строит статические диаграммы за пару строчек кода, именно за это её так ценят Data Scientist’ы. Кроме того, Matplotlib используют другие библиотеки в качестве обёртки, например, Pandas и Seaborn.
Matplotlib стоит использовать в следующих случаях:

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

График в Matplotlib

Над использованием других Python-библиотек стоит подумать в следующих случаях:

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

2. Seaborn

Seaborn — это одна из Python-библиотек, которая построена на основе Matplotlib, но более высокоуровневая [2]. В результате, все, что можно построить в Matplotlib, можно построить в Seaborn. К тому же имеет дополнительные инструменты, например, heatmap и violin plots, а также встроенные темы оформления.
Seaborn можно использовать в следующих случаях:

если вы знакомы с Matplotlib и при этом хотите получить более красивые диаграммы; если ваш основной Data Science инструмент — это Pandas, с которым Seaborn интегрируется довольно просто, аналогично Matplotlib;

нужна визуализация статистических графиков, например, линейной регрессии.

График в Seaborn

3. Missingno

Каждый раз при старте нового проекта Data Science нужно будет провести некоторое исследование данных, чтобы лучше понять данные. При этом часто приходится сталкиваться с отсутствием некоторых значений в датасете. Для оценки отсутствующих значений пригодится Missingno, которая отфильтрует и визуализирует их в виде баров, матрицы, тепловой матрицы (heatmap) или дендограммы (dendrogram) [3].
Missingno может пригодиться в следующих случаях:

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

Ниже приведён пример на Python и результат в виде матрицы, где белым цветом отображаются пустые значения (None).

import missingno as msno

x = [1, 5, 3, None, 8, None, 10, None]

y = [4, None, 5, 6, 7, None, None, None]

Матрица пустых значений в Missingno

4. Altair

Altair — это простая и удобная библиотека Python для статистической визуализации, которая основана на Vega-Lite [4]. Altair позволяет быстро создавать множество разных статических и интерактивных графиков за несколько строк кода. Altair можно считать промежуточным звеном между Seaborn и Plotly, поскольку она более настраиваемая, чем Seaborn, но не настолько интерактивна как Plotly.
Возможные случаи использования:

нужно быстро получить красивые результаты; если вы работаете с Pandas, поскольку, как и Seaborn, просто интегрируется с Altair; есть желание добавить интерактивность.

Однако, если не хотите разбираться с интерфейсом Altair, стоит рассмотреть другие варианты. Диаграммы Altair возвращают данные в формате JSON (JavaScript Object Notation), которые необходимо далее отрисовать с помощью Vega-Lite.

График в Altair

5. Plotly

Plotly — это библиотека для создания интерактивных визуализаций и управления ими [5]. В этой написанной на JavaScript библиотеке есть множество встроенных приложений для машинного обучения (Machine learning) и анализа данных, что упрощает реализацию и визуализацию разных алгоритмов. А вместе с фреймворком Dash можно создать фронтэнд ML-приложение, например, опубликовав GPT-3 (Generative Pre-Training) на сервере [7].
Причины для использования Plotly:

требуется строить интерактивные диаграммы на Python; нужны анимации; хотите создавать красивые карты, научные или финансовые графики и 3D-диаграммы, чтобы показать их широкой публике.

Не рекомендуется использовать Plotly, если:

вам не нужны сложные графики и интерактивность, а важен результат. не хотите разбираться со сложным интерфейсом.

Интерактивный график в Plotly

6. Bokeh

Подобно Plotly, Bokeh — это библиотека на основе Javascript, которая позволяет реализовывать интерактивную визуализацию [7]. Bokeh имеет три уровня управления для разных типов пользователей. Самый высокий уровень позволяет создавать стандартные диаграммы, такие как столбчатые, точечные и т.д., о которых мы говорили тут. Средний уровень предлагает определённый уровень специфичности, как в Matplotlib, и позволяет контролировать основные строительные блоки каждой диаграммы. Наконец, самый низкий уровень даёт вам полный контроль над каждым элементом диаграммы.
Использоваться Bokeh следует, если:

нужны анимации и красивые интерактивные диаграммы; требуется полный контроль над построением графиков.

Однако, рекомендуется выбирать другие библиотеки, если:

нет времени разбираться со всеми настройками; хотите строить трёхмерные графики (в этом случает отлично подойдет Plotly).

Интерактивный график в Bokeh

7. Pygal

Pygal — это наиболее специфичная Python-библиотека с самыми разнообразными видами графиков, которые дополняют основные Data Science исследования. Pygal возвращает XML, который можно отобразить в браузере или сохранить график в формате SVG. Также возможен экспорт в PNG, однако, здесь потребуется установить дополнительные зависимости. Ниже рисунок с так называемым графиком Radar. Также в Pygal можно работать с простенькими картами.

График (radar) в Pygal

Обычно, Pygal используется если вам нужны специфичные графики или простые карты.

Ещё больше подробностей о визуализации данных с реальными примерами Data Science вы узнаете на нашем специализированном курсе «VIP: Визуализация данных на языке Python» в лицензированном учебном центре обучения и повышения квалификации IT-специалистов в Москве.

Библиотека Matplotlib для построения графиков

Разбираемся в том, как работает библиотека Matplotlib, и строим первые графики.

Иллюстрация: Оля Ежак для Skillbox Media

Антон Яценко

Антон Яценко
Изучает Python, его библиотеки и занимается анализом данных. Любит путешествовать в горах.

Matplotlib — популярная Python-библиотека для визуализации данных. Она используется для создания любых видов графиков: линейных, круговых диаграмм, построчных гистограмм и других — в зависимости от задач.

В этой статье научимся импортировать библиотеку и на примерах разберём основные способы визуализации данных.

Что такое Matplotlib и зачем она нужна

Библиотека Matplotlib — пакет для визуализации данных в Python, который позволяет работать с данными на нескольких уровнях:

  • с помощью модуля Pyplot, который рассматривает график как единое целое;
  • через объектно-ориентированный интерфейс, когда каждая фигура или её часть является отдельным объектом, — это позволяет выборочно менять их свойства и отображение.

В этой статье мы будем работать с модулем Pyplot, которого достаточно для построения графиков.

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

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

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

Как связаны Matplotlib, Pyplot и Pylab

При погружении в Matplotlib можно встретить упоминание двух модулей — Pyplot и Pylab. Важно понимать, какой из них использовать в работе и почему они появились. Разберёмся в терминологии.

Библиотека Matplotlib — это пакет для визуализации данных в Python. Pyplot — это модуль в пакете Matplotlib. Его вы часто будете видеть в коде как matplotlib.pyplot. Модуль помогает автоматически создавать оси, фигуры и другие компоненты, не задумываясь о том, как это происходит. Именно Pyplot используется в большинстве случаев.

Pylab — это ещё один модуль, который устанавливается вместе с пакетом Matplotlib. Он одновременно импортирует Pyplot и библиотеку NumPy для работы с массивами в интерактивном режиме или для доступа к функциям черчения при работе с данными.

Сейчас Pylab имеет только историческое значение — он облегчал переход с MATLAB на Matplotlib, так как позволял обходиться без операторов импорта (а именно так привыкли работать пользователи MATLAB). Вы можете встретиться с Pylab в примерах кода на разных сайтах, но на практике использовать модуль не придётся.

Установка и импорт библиотеки

Matplotlib — универсальная библиотека, которая работает в Python на Windows, macOS и Linux. При работе с Google Colab или Jupyter Notebook устанавливать Python и Matplotlib не понадобится — язык программирования и библиотека уже доступны «из коробки». Но если вы решили писать код в другой IDE, например в Visual Studio Code, то сначала установите Python, а затем библиотеку Learn через терминал:

Мы получили обычный линейный график. Разберём каждую команду:

  • plt.plot() — стандартная функция, которая строит график в соответствии со значениями, которые ей были переданы. Мы передали в неё координаты точек;
  • plt.show() — функция, которая отвечает за вывод визуализированных данных на экран. Её можно и не указывать, но тогда, помимо красивой картинки, мы увидим разную техническую информацию.

Дополним наш первый график заголовком и подписями осей:

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

Подробно про настройку параметров функции plt.plot() можно прочесть в официальной документации.

Диаграмма рассеяния, или scatterplot

Диаграмма рассеяния используется для оценки взаимосвязи двух переменных, значения которых откладываются по разным осям. Для её построения используется функция plt.scatter(), аргументами которой выступают переменные с дискретными значениями:

Столбчатая диаграмма

Такой тип визуализации позволяет удобно сравнивать значения отдельных переменных. В столбчатой диаграмме длина столбцов пропорциональна показателям, которые они отображают. Как правило, одна из осей соответствует одной категории, а вторая — её дискретному значению.

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

Комбинируем разные варианты графиков

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

Всё получилось. Но сейчас линейный график видно плохо — он просто теряется на синем фоне столбцов. Увеличим прозрачность столбчатой диаграммы с помощью параметра alpha:

Теперь линейный график хорошо виден и мы можем оценивать динамику изменения прибыли.

Круговая диаграмма

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

Так информация нагляднее, но непонятно, какая именно доля приходится на каждую марку автомобиля. Поэтому круговые диаграммы всегда лучше дополнять значениями в процентах. Отредактируем наш код, добавив к функции pie параметр autopct:

Теперь сравнить категории проще, так как мы видим числовые значения.

Сложные визуализации

Построим столбчатый график с накоплением. Он позволяет оценить динамику соотношения значений одной переменной. Попробуем показать, как соотносится количество устройств на Android и iOS в разные годы:

График позволяет увидеть, что соотношение устройств, работающих на Android и iOS, постепенно меняется — устройств на Android становится больше.

Что дальше?

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

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

  • Mastering matplotlib Дункана Макгреггора;
  • Hands-on Matplotlib: Learn Plotting and Visualizations with Python 3 Ашвина Паянкара;
  • Matplotlib 3.0 Cookbook: Over 150 recipes to create highly detailed interactive visualizations using Python Рао Полади.

Читайте также:

  • Python для новичков: сферы применения и возможности
  • «Я удивился, когда написал код, а он заработал»: как живёт начинающий Python-разработчик
  • Как установить библиотеку в Python: руководство для новичка

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *