Pandas:创建基于多列的频率表


您可以使用以下基本语法在 pandas 中创建基于多列的频率表:

 df. value_counts ([' column1 ',' column2 '])

以下示例展示了如何在实践中使用此语法。

示例:在 Pandas 中创建基于多列的频率表

假设我们有以下 pandas DataFrame,其中包含有关球队名称、位置和各个篮球运动员得分的信息:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'G', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [24, 33, 20, 15, 16, 16, 29, 25]})

#view DataFrame
print (df)

  team position points
0 AG 24
1 AG 33
2 AG 20
3 AF15
4 BG 16
5 BG 16
6 BF 29
7 BF 25

我们可以使用value_counts()函数创建一个频率表,显示团队位置列中每个值组合的出现次数:

 #count frequency of values in team and position columns
df. value_counts ([' team ',' position '])

team position
GA 3
BF 2
      G2
AF1
dtype: int64

从结果我们可以看出:

  • A队和G位置出现了3
  • B队和F位置出现了2
  • B队和G位置出现了2
  • A队和F位置出现1

请注意,我们可以使用reset_index()来返回DataFrame:

 #count frequency of values in team and position columns and return DataFrame
df. value_counts ([' team ',' position ']). reset_index ()

        team position 0
0 A G 3
1 B F 2
2 B G 2
3 A F 1

我们可以使用rename()函数重命名包含计数的列:

 #get frequency of values in team and position column and rename count column
df. value_counts ([' team ',' position ']). reset_index (). rename (columns={0:' count '})

        team position count
0 A G 3
1 B F 2
2 B G 2
3 A F 1

最终结果是一个 DataFrame,其中包含TeamPosition列中每个唯一值组合的频率。

其他资源

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

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

添加评论

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