groupby函数作用

发布时间 2023-09-21 14:55:03作者: SoftWareBoy

在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两列进行分组,并计算每个分组的人数。最后,打印了计算结果。