В прошлой статье мы рассказали о том, как важно визуализировать данные в Data Science и Machine Learning. Также мы научились строить такие графики, как линейный, барный, диаграмму рассеяния, гистограмму и ящик с усами, в Python c библиотекой matplotlib. Сегодня мы покажем вам, как эти же самые графики могут быть построены в pandas без явного импортирования matplotlib, причем 3 разными способами. Предварительно отметим: pandas использует библиотеку matplotlib для визуализации, хотя в коде мы не будем ее импортировать, тем не менее она должна быть установлена. Если у вас ее нет, введите в командной строке:
pip install matplotlib
Продолжаем пробовать вино
В качестве примера возьмем тот же самый датасет Kaggle с отзывами о винных изделиях разных стран, который мы обсуждали ранее:
data = pd.read_csv('winemag-data-130k-v2.csv') data = data.drop(['description', 'title', 'Unnamed: 0'], axis=1) data.head()
Первые пять строк датасета выглядят следующим образом:
Ключевыми атрибутами являются price — цена и points — балы. А теперь приступим к изучению визуализации данных в pandas.
Диаграмма рассеяния 1-м методом построения
В диаграмме рассеяния каждая точка одного атрибута соответствует каждой точке другого. 1-й метод построения заключается в том, что у DataFrame есть метод plot [1], одним из аргументов которого является kind, определяющий вид графика. И раз у нас точечный график, нужно указать scatter:
data.plot(x='points', y='price', kind='scatter')
Отметим, анализируемые атрибуты указываются как строки, по x
и y
. Pandas уже сам поймет, что именно строить, к тому же он еще и подпишет соответствующие оси:
Линейный график
Линейный график строит переход от точки к точке. Построим такой график, где для каждого бала будем брать среднюю цену:
d = data.groupby('points').mean() d.plot()
Здесь, мы не указывали аргумент kind
, так как pandas по умолчанию строит именно линейный график. Результат:
Pandas даже предоставил легенду price на графике, что очень удобно, когда этих линий очень много.
Барный график 2-м методом построения
На барном графике каждая категория в виде бара имеет высоту, соответствующую числовому значению этой категории. Построим первые 7 стран по производству вина:
countries = data['country'].value_counts().head(7) countries.plot.bar()
2 метод построения — вызов конкретного графика через метод plot
. Таким образом, барный график будет выглядеть так:
Подобным же образом можно вывести и другие вида графиков в Python:
data.plot.scatter() # диаграмма рассеяния data.plot.hist() # гистограмма
Заметим, у такого способа отсутствует возможность вызова boxplot
, поэтому для визуализации ящика с усами используется 1-й или 3-й способ.
Гистограмма 3-м методом построения
В машинном обучении плотности распределения служат хорошим инструментом анализа, особенно для линейных моделей. Например, плотность распределения остатков близкое к нормальному показывает, что на этих данных можно построить линейную регрессию. Гистограммы могут помочь с этим.
data.hist(column='points', bins=40, density=True)
Здесь указан 3-й способ получения графиков. DataFrame имеет методы hist
, bar
, scatter
и т.д., с которыми можно работать. Только нужно заметить, что метод hist
имеет аргументом column
, в которую передается необходимый столбец. Не указав его, pandas построит гистограммы для всех числовых атрибутов. Данная гистограмма выглядит вот так:
Ящик с усами
В прошлый раз мы строили ящик с усами, показывающий размах данных, на всем наборе баллов датасета. Проделаем аналогичное через метод boxplot
(3-й метод):
data.boxplot(column='points')
Вид графика c теми же двумя выбросами представлен следующим образом:
Такая запись очень короткая, что очень в стиле Python. Лаконичный код позволяет не отвлекаться от основных дел — создания модели Machine Learning, например. Но стоит заметить, у DataFrame нет метода scatter
, поэтому для диаграммы рассеяния придется использовать только 1-й способ.
Подытожим способы построения диаграмм в Pandas:
- Метод plot у DataFrame, принимающий в качестве аргумента
kind
, который определяет вид графика. Например,data.plot(kind='bar')
построит барный график. Этим способом можно построить все вышеперечисленные графики.
- Вызов функции для построения hist, bar, line (линейный) через метод plot выглядит так:
data.plot.bar()
- Напрямую обратиться к bar, boxplot или hist можно через команду
data.bar()
Все примеры находятся в репозитории на github [2]. В следующей статье мы научимся работать с тензорами в numpy.
Визуализация данных без ее интерпретации может нести мало информации. В нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве мы поможем вам не только строить графики в Python, но и читать их.
Курс VIP: Визуализация данных на языке Python
[…] В одной из наших статей мы говорили о […]