Pandas:如何在 crosstab() 函数中使用 aggfunc
您可以使用 pandas crosstab()函数中的aggfunc参数来创建使用特定指标聚合值的交叉表:
p.d. crosstab (index=df. col1 , columns=df. col2 , values=df. col3 , aggfunc=' count ')
aggfunc的默认值为“count”,但您可以指定其他聚合方法,例如average、median、sum、min、max等。
您还可以在aggfunc参数中指定多种聚合方法:
p.d. crosstab (index=df. col1 , columns=df. col2 , values=df. col3 , aggfunc=[' min ', ' max '])
以下示例展示了如何在实践中通过以下 pandas DataFrame 使用这些方法:
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
以下是如何解释结果:
- A队F位球员的平均分是24分。
- A队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
以下是如何解释结果:
- A队F位置球员的最高分是24分。
- A 队 G 位置球员的最高分是25 分。
等等。
示例2:在aggfunc中创建具有多个值的交叉表
我们可以使用aggfunc参数中具有多个值的crosstab()函数,通过每个位置和团队组合的多个指标来聚合点值:
#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
以下是如何解释结果:
- A 队 F 位置球员的最低分值是24 分。
- A队G位置球员的最低分值为22分。
- A 队 F 位置球员的最高分值为24 分。
- A队G位置球员的最高分值为25 。
等等。
注意:您可以在此处找到 pandas crosstab()函数的完整文档。
其他资源
以下教程解释了如何执行其他常见的 panda 任务:
Pandas:如何创建带有百分比的交叉表
Pandas:如何使用 GroupBy 和值计数
Pandas:如何使用 GroupBy 和 bin 计数