Pandas Groupby语法解释

Pandas Groupby Syntax explanation

我很困惑为什么 Pandas Groupby 函数可以用下面两种方式编写并产生相同的结果。具体代码不是真正的问题,两者都给出相同的结果。我希望有人能分解两者的语法。

df.groupby(['gender'])['age'].mean()

df.groupby(['gender']).mean()['age']

在第一个实例中,它看起来好像您正在专门针对年龄列调用 .mean() 函数。第二个看起来像你在整个 groupby 对象上调用 .mean() 并在之后选择年龄列?是否有运行时注意事项。

It reads as if you are calling the .mean() function on the age column specifically. The second appears like you are calling .mean() on the whole groupby object and selecting the age column after?

这正是正在发生的事情。 df.groupby() returns 一个数据框。默认情况下应用 .mean() 方法 column-wise,因此每列的平均值独立于其他列计算,结果作为 Series(可以索引)返回,如果 运行 在完整数据帧上。

颠倒顺序生成单列作为 Series,然后计算平均值。如果您知道您只想要单个列的平均值,那么首先隔离它会更快,而不是计算每一列的平均值(特别是如果您有一个非常大的数据框)。

groupby 视为 rows-separation 函数。它将具有相同属性(在 by 参数中指定)的所有行分组到单独的数据框中。

groupby之后,你需要一个聚合函数来汇总每个子帧中的数据。您可以通过多种方式做到这一点:

# In each subframe, take the `age` column and summarize it
# using the `mean function from the result
df.groupby(['gender'])['age'].mean()

# In each subframe, apply the `mean` function to all numeric
# columns then extract the `age` column
df.groupby(['gender']).mean()['age']

第一种方法更有效,因为您是在单个列上应用聚合函数 (mean)。