pandas中df.groupby详解?
`df.groupby` 是 pandas 库用于实现按照某些列进行拆分,应用函数和组合的一个功能。步骤如下:
1. 按照指定的一列或多列进行分组 (grouping)
2. 对每个分组应用一个聚合函数 (aggregation)
3. 将每个分组的聚合结果合并成一个数据结构
语法:
df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs)
参数:
- `by`: 用于分组的列名或者数组
- `axis`: 默认为 `0`,表示对行进行操作;`1` 表示对列进行操作
- `level`: 整数或者字符串类型的值,表示按照某个特定层次分组
- `as_index`: 默认值为 `True`,表示分组列将在结果中作为索引;若设为 `False`,则分组列将不作为索引。
- `sort`: 默认值为 `True`,表示按分组键进行排序;若设为 `False`,则不进行排序
- `group_keys`: 默认值为 `True`,表示分组键作为新的索引,同时可以控制是否显示在结果中
- `squeeze`: 默认值为 `False`,表示当返回的组是一个单一的组,是否强制其成为一个序列
- `observed`: bool, 默认值为 `False`,表示在拆分时只包含观察到的值
示例:
import pandas as pd
import numpy as np
data = {'Animal':['Dog','Cat','Dog','Cat','Dog','Cat','Dog','Dog','Cat','Cat'],
'Name':['Happy','Lucy','Lucky','Leo','Milo','Kitty','Lily','Max','MeiMei','Mimi'],
'Weight':[32,12,45,23,17,8,15,37,24,21]}
df = pd.DataFrame(data)
# 根据 Animal 列进行分组,计算 Weight 列平均值
grouped = df.groupby(['Animal'])
result = grouped['Weight'].mean()
print(result)
输出:
Animal
Cat 16.200000
Dog 26.166667
Name: Weight, dtype: float64
本例中,我们根据 `Animal` 列进行分组,然后对 `Weight` 列进行求平均值。可以看到,输出结果中显示了每个不同的 `Animal` 分组的平均体重。