Pandas: как создать гистограмму из GroupBy


Вы можете использовать следующий синтаксис для создания гистограммы из функции 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: как рассчитать корреляцию по группе