5 графиков для Data Science, которые можно построить в Pandas 3 способами

В прошлой статье мы рассказали о том, как важно визуализировать данные в 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()

Первые пять строк датасета выглядят следующим образом:

Отображение первых пяти строк вызовом метода head
Отображение 5 первых строк в Pandas

Ключевыми атрибутами являются price — цена и points — балы. А теперь приступим к изучению визуализации данных в pandas.

Диаграмма рассеяния 1-м методом построения

В диаграмме рассеяния каждая точка одного атрибута соответствует каждой точке другого. 1-й метод построения заключается в том, что у DataFrame есть метод plot [1], одним из аргументов которого является kind, определяющий вид графика. И раз у нас точечный график, нужно указать scatter:

data.plot(x='points', y='price', kind='scatter')

Отметим, анализируемые атрибуты указываются как строки, по x и y. Pandas уже сам поймет, что именно строить, к тому же он еще и подпишет соответствующие оси:

Отобажение диаграммы рассеяния pandas
Отобажение диаграммы рассеяния pandas

Линейный график

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

d = data.groupby('points').mean()
d.plot()

Здесь, мы не указывали аргумент kind, так как pandas по умолчанию строит именно линейный график. Результат:

Отображение линейного графикa pandas
Линейный график

Pandas даже предоставил легенду price на графике, что очень удобно, когда этих линий очень много.

Барный график 2-м методом построения

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

countries = data['country'].value_counts().head(7)
countries.plot.bar()

2 метод построения — вызов конкретного графика через метод plot. Таким образом, барный график будет выглядеть так:

Отображение барного графика pandas
Барный график

Подобным же образом можно вывести и другие вида графиков в 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 построит гистограммы для всех числовых атрибутов. Данная гистограмма выглядит вот так:

Отображение гистограммы pandas
Отображение гистограммы pandas

Ящик с усами

В прошлый раз мы строили ящик с усами, показывающий размах данных, на всем наборе баллов датасета. Проделаем аналогичное через метод boxplot (3-й метод):

data.boxplot(column='points')

Вид графика c теми же двумя выбросами представлен следующим образом:

Отображение ящика с усами pandas
Ящик с усами

Такая запись очень короткая, что очень в стиле Python. Лаконичный код позволяет не отвлекаться от основных дел — создания модели Machine Learning, например. Но стоит заметить, у DataFrame нет метода scatter, поэтому для диаграммы рассеяния придется использовать только 1-й способ.

Подытожим способы построения диаграмм в Pandas:

  1. Метод plot у DataFrame, принимающий в качестве аргумента kind, который определяет вид графика. Например,
    data.plot(kind='bar')
    

    построит барный график. Этим способом можно построить все вышеперечисленные графики.

  2. Вызов функции для построения hist, bar, line (линейный) через метод plot выглядит так:
    data.plot.bar()
    
  3. Напрямую обратиться к bar, boxplot или hist можно через команду
    data.bar()
    

Все примеры находятся в репозитории на github [2]. В следующей статье мы научимся работать с тензорами в numpy.

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

Курс VIP: Визуализация данных на языке Python

Источники
  1. https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html
  2. https://github.com/DataLatata/python-school/blob/master/7pandas-figures/pandas-plots.ipynb
1 Comments

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

Поиск по сайту