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: как группировать и агрегировать по нескольким столбцам

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.