Pandas: как использовать aggfunc в функции crosstab()


Вы можете использовать аргумент aggfunc в функции pandas crosstab() для создания кросс-таблицы, которая агрегирует значения с использованием определенной метрики:

 p.d. crosstab (index=df. col1 , columns=df. col2 , values=df. col3 , aggfunc=' count ')

Значением aggfunc по умолчанию является «count», но вы можете указать другие методы агрегирования, такие как среднее, медиана, сумма, минимум, максимум и т. д.

Вы также можете указать несколько методов агрегации в аргументе aggfunc :

 p.d. crosstab (index=df. col1 , columns=df. col2 , values=df. col3 , aggfunc=[' min ', ' max '])

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

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C '],
                   ' position ':['G', 'G', 'F', 'G', 'F', 'F', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [22, 25, 24, 39, 34, 20, 18, 17, 20, 19, 22]})

#view DataFrame
print (df)

   team position points
0 AG 22
1 AG 25
2 AF 24
3 BG 39
4 BF 34
5 BF 20
6 BF 18
7 GC 17
8 GC 20
9 CF 19
10 CF 22

Пример 1. Создайте перекрестную таблицу со значением в aggfunc.

Мы можем использовать следующую функцию crosstab() с аргументом aggfunc=’mean’ , чтобы создать перекрестную таблицу, которая отображает средние значения очков для каждой позиции и комбинации команд:

 #create crosstab that displays mean points value by team and position
p.d. crosstab (index=df. team , columns=df. position , values=df. points , aggfunc=' mean ')

position F G
team		
A 24.0 23.5
B 24.0 39.0
C 20.5 18.5

Вот как интерпретировать результат:

  • Среднее количество очков игроков команды А на позиции F составляет 24 .
  • Среднее количество очков игроков команды А на позиции G составляет 23,5 .

И так далее.

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

 #create crosstab that displays max points value by team and position
p.d. crosstab (index=df. team , columns=df. position , values=df. points , aggfunc=' max ')


position F G
team		
At 24 25
B 34 39
C 22 20

Вот как интерпретировать результат:

  • Максимальное количество очков для игроков команды А на позиции F — 24 .
  • Максимальное количество очков для игроков команды А в позиции G — 25 .

И так далее.

Пример 2. Создание кросс-таблицы с несколькими значениями в aggfunc

Мы можем использовать функцию crosstab() с несколькими значениями в аргументе aggfunc для агрегирования значений очков по нескольким метрикам для каждой позиции и комбинации команды:

 #create crosstab that displays min and max points by team and position
p.d. crosstab (df. team , df. position , df. points , aggfunc=[' min ', ' max ']) 

	              min max
position F G F G
team				
A 24 22 24 25
B 18 39 34 39
C 19 17 22 20

Вот как интерпретировать результат:

  • Минимальное количество очков для игроков команды А на позиции F составляет 24 .
  • Минимальное количество очков для игроков команды А на позиции G составляет 22 .
  • Максимальное количество очков для игроков команды А на позиции F составляет 24 .
  • Максимальное количество очков для игроков команды А на позиции G составляет 25 .

И так далее.

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *