Pandas:如何创建带有百分比的交叉表


您可以使用 pandas crosstab()函数中的标准化参数来创建显示百分比值而不是数字的交叉表:

 p.d. crosstab (df. col1 , df. col2 , normalize=' index ')

规范化参数接受三个不同的参数:

  • all :显示相对于所有值的百分比。
  • index :显示行值总数的百分比。
  • :显示列值总计的百分比。

以下示例展示了如何在实践中通过以下 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

以下是每支球队和位置的球员人数的默认交叉表:

 #create crosstab that displays count by team and position
p.d. crosstab (df. team , df. position )

position F G
team		
AT 12
B 3 1
C 2 2

示例 1:创建一个交叉表,其中包含相对于所有值的百分比

我们可以使用crosstab()函数和normalize=all参数来创建一个交叉表,显示每个值相对于所有值总数的百分比:

 #create crosstab that displays counts as percentage relative to total count
p.d. crosstab (df. team , df. position , normalize=' all ')

position F G
team		
A 0.090909 0.181818
B 0.272727 0.090909
C 0.181818 0.181818

以下是如何解释结果:

  • A队F位球员占总人数的9.09%
  • A队G位置球员占总人数的18.18%

等等。

示例 2:创建一个交叉表,其中包含行总计的百分比

我们可以使用crosstab()函数和normalize=index参数来创建一个交叉表,显示每个值相对于行总计的百分比:

 #create crosstab that displays counts as percentage relative to row totals
p.d. crosstab (df. team , df. position , normalize=' index ')

position F G
team		
A 0.333333 0.666667
B 0.750000 0.250000
C 0.500000 0.500000

以下是如何解释结果:

  • F位置的球员占A队总球员的33.33%。
  • F位置的球员占B队总球员的75%。
  • F位置的球员占C队总球员的50%。

等等。

示例 3:创建一个交叉表,其中包含相对于列总计的百分比

我们可以使用crosstab()函数和normalize=columns参数来创建一个交叉表,显示每个值相对于列总计的百分比:

 #create crosstab that displays counts as percentage relative to column totals
p.d. crosstab (df. team , df. position , normalize=' columns ')

position F G
team		
A 0.166667 0.4
B 0.500000 0.2
C 0.333333 0.4

以下是如何解释结果:

  • A队球员占F位置球员总数的16.67%
  • B队球员占F位置球员总数的50%
  • C队球员占F位置球员总数的33.33%

等等。

注意:您可以在此处找到 pandas crosstab()函数的完整文档。

其他资源

以下教程解释了如何在 pandas 中执行其他常见任务:

Pandas:如何使用 GroupBy 和值计数
Pandas:如何使用 GroupBy 和 bin 计数
Pandas:如何计算有条件的列中的值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注