Вы можете использовать следующий синтаксис для создания гистограммы из функции GroupBy в pandas:
#calculate sum of values by group
df_groups = df.groupby(['group_var'])['values_var']. sum ()
#create bar plot by group
df_groups.plot(kind='bar')
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: создание гистограммы из GroupBy в Pandas
Предположим, у нас есть следующий кадр данных pandas, который показывает очки, набранные баскетболистами в разных командах:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'A',
'B', 'B', 'B', 'B', 'B',
'C', 'C', 'C', 'C', 'C'],
'points': [12, 29, 34, 14, 10, 11, 7, 36,
34, 22, 41, 40, 45, 36, 38]})
#view first five rows of DataFrame
df.head ()
team points
0 A 12
1 A 29
2 A 34
3 A 14
4 A 10
Мы можем использовать следующий синтаксис для вычисления суммы очков, набранных каждой командой, и создать гистограмму для визуализации суммы для каждой команды:
import matplotlib.pyplot as plt
#calculate sum of points for each team
df.groupby('team')['points']. sum ()
#create bar plot by group
df_groups.plot(kind='bar')

По оси X отложено название каждой команды, а по оси Y — сумма очков, набранных каждой командой.
Мы также можем использовать следующий код, чтобы график выглядел немного лучше:
import matplotlib.pyplot as plt
#calculate sum of points for each team
df_groups = df.groupby(['team'])['points']. sum ()
#create bar plot with custom aesthetics
df_groups.plot(kind='bar', title='Total Points by Team',
ylabel='Total Points', xlabel='Team', figsize=( 10 , 6 ))
#rotate x-axis ticks vertically
plt.xticks (rotation= 0 )

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