groupby函数作用
在pandas中,groupby函数用于对DataFrame对象进行分组操作。它将数据按照指定的列或多个列进行分组,并返回一个GroupBy对象,可以对分组后的数据进行聚合、转换和筛选等操作。
groupby函数的常见用法如下:
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs)
参数说明:
- by:指定用于分组的列名、列名的列表、字典或Series对象。如果是列名或列名的列表,表示按照指定的列进行分组;如果是字典或Series对象,表示按照字典或Series对象的值进行分组。
- axis:指定按照列(axis=0)还是按照行(axis=1)进行分组。默认值为0,表示按照列进行分组。
- level:指定按照多级索引的哪一级进行分组。
- as_index:指定是否将分组的列作为索引,默认为True。
- sort:指定是否按照分组键对结果进行排序,默认为True。
- group_keys:指定是否在结果中包含分组键,默认为True。
- squeeze:指定当分组只有一个组时,是否返回一个Series对象,默认为False。
- observed:指定在进行分组操作时是否考虑观察到的所有值,默认为False。
示例:
import pandas as pd
data = {'name': ['John', 'Mary', 'Peter', 'John'],
'city': ['London', 'Paris', 'London', 'Berlin'],
'age': [25, 30, 35, 40]}
df = pd.DataFrame(data)
# 按照name列进行分组,并计算每个分组的平均年龄
grouped = df.groupby('name')
mean_age = grouped['age'].mean()
print(mean_age)
# 按照多个列进行分组,并计算每个分组的人数
grouped = df.groupby(['name', 'city'])
count = grouped.size()
print(count)
输出:
name
John 32.5
Mary 30.0
Peter 35.0
Name: age, dtype: float64
name city
John Berlin 40
London 25
Mary Paris 30
Peter London 35
dtype: int64
在上述示例中,首先使用groupby函数按照name列进行分组,并计算每个分组的平均年龄。然后,使用groupby函数按照name和city两列进行分组,并计算每个分组的人数。最后,打印了计算结果。