深入理解 Pandas 中的 groupby 函数

groupby 函数是 pandas 库中 DataFrame 和 Series 对象的一个方法,它允许你对这些对象中的数据进行分组和聚合。下面是 groupby 函数的一些常用语法和用法。

对于 DataFrame 对象,groupby 函数的语法如下:

DataFrame.groupby(by=None, axis=0, level=None, as_index=True,
                  sort=True, group_keys=True, squeeze=False, 
                   observed=False, dropna=True) 

其中,各个参数的含义如下:

  • by:用于分组的列名或函数。可以是一个列名、一个函数、一个列表或一个字典。
  • axis:分组轴。如果 axis=0(默认值),则沿着行方向分组;如果 axis=1,则沿着列方向分组。
  • level:在多层索引的情况下,用于指定分组的级别。
  • as_index:是否将分组键作为索引返回。如果 as_index=True(默认值),则返回一个带有分组键作为索引的对象;否则返回一个不带索引的对象。
  • sort:是否对分组键进行排序。如果 sort=True(默认值),则对分组键进行排序;否则不排序。
  • group_keys:是否在结果中包含分组键。如果 group_keys=True(默认值),则在结果中包含分组键;否则不包含。
  • squeeze:是否压缩返回结果。如果 squeeze=True,则尝试压缩返回结果;否则不压缩。
  • observed:是否仅使用观察到的类别进行分组。仅适用于类别类型数据。
  • dropna:是否删除包含缺失值的行。如果 dropna=True(默认值),则删除包含缺失值的行;否则保留。

在数据分析中,我们经常需要对数据进行分组和聚合。例如,我们可能需要计算每个类别中某个变量的平均值、最大值或最小值;或者我们需要对每个类别中的数据进行汇总、统计等操作。在这些情况下,groupby 函数就能派上用场。

例如,假设我们有一个 DataFrame 对象,其中包含了若干个数值列和一个类别列:

import pandas as pd

data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': ['X', 'X', 'Y', 'Y']
}
df = pd.DataFrame(data)

现在,我们想要计算每个类别中 A 列的平均值。我们可以使用 groupby 函数来实现这一点:

result = df.groupby('C')['A'].mean()
print(result)

当我们运行这段代码时,会看到以下输出:

C
X    1.5
Y    3.5
Name: A, dtype: float64

这表明 groupby 函数已经成功地计算了每个类别中 A 列的平均值。

除了计算平均值之外,我们还可以使用 groupby 函数来执行其他操作。例如,我们可以使用它来计算每个类别中 B 列的最大值

result = df.groupby('C')['B'].max()
print(result)

当我们运行这段代码时,会看到以下输出:

C
X    6
Y    8
Name: B, dtype: int64

这表明 groupby 函数已经成功地计算了每个类别中 B 列的最大值。

此外,我们还可以使用 groupby 函数来对数据进行汇总和统计。例如,假设我们想要对每个类别中 A 和 B 列的数据进行汇总,我们可以使用以下代码:

result = df.groupby('C').agg({'A': 'sum', 'B': 'sum'})
print(result)

当我们运行这段代码时,会看到以下输出:

A   B
C
X  3  11
Y  7  15

这表明 groupby 函数已经成功地对每个类别中 A 和 B 列的数据进行了汇总。

如果想要对重复行进行汇聚,并用分号隔开,你可以使用 groupby 函数和 agg 函数来实现这一点。例如,假设我们有一个 DataFrame 对象,其中包含了若干个数值列和一个类别列:

import pandas as pd

data = {
    'A': ['X', 'X', 'Y', 'Y'],
    'B': [1,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值