Pandas: как использовать Groupby и Plot (с примерами)


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

Метод 1: группировка и построение нескольких линий на одном графике

#define index column
df.set_index('day', inplace= True )

#group data by product and display sales as line chart
df.groupby('product')['sales'].plot(legend= True )

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

pd.pivot_table(df.reset_index(),
 index='day', columns='product', values='sales '
 ).plot(subplots= True )

В следующем примере показано, как использовать каждый метод на практике со следующими пандами DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'day': [1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
 'product': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
 'sales': [4, 7, 8, 12, 15, 8, 11, 14, 19, 20]})

#view DataFrame
df

 day product sales
0 1 A 4
1 2 A 7
2 3 A 8
3 4 A 12
4 5 A 15
5 1 B 8
6 2 B 11
7 3 B 14
8 4 B 19
9 5 B 20

Метод 1: группировка и построение нескольких линий на одном графике

В следующем коде показано, как сгруппировать DataFrame по переменной «продукт» и отобразить «продажи» каждого продукта на одной диаграмме:

#define index column
df.set_index('day', inplace= True )

#group data by product and display sales as line chart
df.groupby('product')['sales'].plot(legend= True ) 

По оси X отображается день, по оси Y — продажи, а в каждой отдельной строке — продажи отдельных продуктов.

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

В следующем коде показано, как сгруппировать DataFrame по переменной «продукт» и отобразить «продажи» каждого продукта на отдельных подграфиках:

pd.pivot_table(df.reset_index(),
 index='day', columns='product', values='sales '
 ).plot(subplots= True ) 

Первый график показывает продажи продукта А, а второй график показывает продажи продукта Б.

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

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

pd.pivot_table(df.reset_index(),
 index='day', columns='product', values='sales '
 ).plot(subplots= True , layout=(1,2)) 

Дополнительные ресурсы

В следующих руководствах объясняется, как создавать другие распространенные визуализации в pandas:

Как создать блокплот из Pandas DataFrame
Как создать круговую диаграмму из Pandas DataFrame
Как создать гистограмму из Pandas DataFrame