Pandas: как создать сводную таблицу с подсчетом значений


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

Метод 1: сводная таблица с подсчетами

pd.pivot_table(df, values='col1', index='col2', columns='col3',
 aggfunc='count')

Метод 2: сводная таблица с уникальными счетчиками

pd.pivot_table(df, values='col1', index='col2', columns='col3',
 aggfunc=pd.Series.nunique )

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

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
 'position': ['G', 'G', 'F', 'C', 'G', 'F', 'F', 'F'],
 'points': [4, 4, 6, 8, 9, 5, 5, 12]})

#view DataFrame
df

 team position points
0 A G 4
1 A G 4
2 A F 6
3 A C 8
4 B G 9
5 B F 5
6 B F 5
7 B F 12

Способ 1: создать сводную таблицу Pandas с подсчетами

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

#create pivot table
df_pivot = pd.pivot_table(df, values='points', index='team', columns='position',
 aggfunc='count')

#view pivot table
df_pivot

position C F G
team 
 A 1.0 1.0 2.0
 B NaN 3.0 1.0

Из вывода мы видим:

  • В столбце «Очки» есть 1 значение для команды A на позиции C.
  • В столбце «Очки» есть 1 значение для команды A на позиции F.
  • В столбце «очки» есть 2 значения для команды A на позиции G.

И так далее.

Способ 2: создать сводную таблицу Pandas с уникальными счетчиками

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

#create pivot table
df_pivot = pd.pivot_table(df, values='points', index='team', columns='position',
 aggfunc=pd.Series.nunique )

#view pivot table
df_pivot

position C F G
team 
 A 1.0 1.0 1.0
 B NaN 2.0 1.0

Из вывода мы видим:

  • В столбце «Очки» есть 1 уникальное значение для команды A на позиции C.
  • В столбце «Очки» есть 1 уникальное значение для команды A на позиции F.
  • В столбце «Очки» есть 1 уникальное значение для команды A на позиции G.

И так далее.

Примечание.Полную документацию по функции pandas pivot_table() можно найти здесь .

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

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

Pandas: как изменить форму DataFrame с длинного на широкий
Pandas: как изменить форму DataFrame с широкого на длинный
Pandas: как группировать и агрегировать по нескольким столбцам