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 для подсчета ячеек