Pandas:如何使用 groupby 和 bin 计数


您可以使用以下语法来计算 pandas 中由另一个变量分组的变量的框数:

 #define bins
groups = df. groupby ([' group_var ', pd. cut (df. value_var , bins)])

#display bin count by group variable
groups. size (). unstack ()

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

示例:将 GroupBy 与 Pandas 中的 bin 数量一起使用

假设我们有以下 pandas DataFrame,显示来自不同球队的篮球运动员的得分:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
                            'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
                   ' points ': [4, 7, 7, 11, 12, 15, 19, 19,
                             5, 5, 11, 12, 14, 14, 15, 15]})

#view DataFrame
print (df)

   team points
0 to 4
1 to 7
2 to 7
3 to 11
4 to 12
5 to 15
6 to 19
7 to 19
8 B 5
9 B 5
10 B 11
11 B 12
12 B 14
13 B 14
14 B 15
15 B 15

我们可以使用以下语法来计算每个团队的得分频率,并将其分组到特定的容器中:

 #define groups
groups = df. groupby ([' team ', pd. cut (df. points , [0, 10, 15, 20])])

#display bin count grouped by team
groups. size (). unstack ()

points (0, 10] (10, 15] (15, 20]
  team			
     A 3 3 2
     B 2 6 0

以下是如何解释结果:

  • A队共有3名球员得分在0到10分之间。
  • A队总共有3名球员得分在10到15分之间。
  • A 队共有2 名球员得分在 15 至 20 分之间。

等等。

请注意,我们可以在pd.cut()函数中指定我们想要的 bin。

例如,我们可以只定义两个 bin:

 #define groups
groups = df. groupby ([' team ', pd. cut (df. points , [0, 10, 20])])

#display bin count grouped by team
groups. size (). unstack ()

points (0, 10] (10, 20]
  team		
     At 3 5
     B 2 6

以下是如何解释结果:

  • A队共有3名球员得分在0到10分之间。
  • A队总共有5名球员得分在10到20分之间。
  • B队共有2名球员得分在0到10分之间。
  • B队总共有6名球员得分在10到20分之间。

注 1 :您可以在此处找到GroupBy函数的完整文档。

注 2 :您可以在此处找到cut函数的完整文档。

其他资源

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

Pandas:如何计算每组的累计和
Pandas:如何按组计算唯一值
Pandas:如何按组计算众数
Pandas:如何按组计算相关性

添加评论

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