Pandas GroupBy 用法

  • Post category:Python

下面是Pandas GroupBy的详细讲解和实例说明:

1. GroupBy的定义

Pandas是一种强大的数据处理工具,而其中的GroupBy是一个非常重要的方法。通过GroupBy方法,我们可以对数据集进行分组操作,然后对每个组进行聚合、转换或者其他操作。

2. GroupBy的语法

下面是GroupBy方法的语法:

grouped = df.groupby(group_key)

其中,group_key表示要分组的键,可以是一个列表或者Series,以及相应的轴标签。

3. GroupBy的分组键

分组键可以是以下任意类型:

  • 列表、数组、Series或者其他序列类型,可以用来作为分组键;
  • 字典或者Series类型,用于将标签映射到组名称;
  • 函数或函数列表,用于按照函数的返回值进行分组;
  • 对于DataFrame类型,任意能够接收DataFrame为参数的函数都可以作为分组键,例如:df.groupby(len)。

4. GroupBy的聚合函数

分组操作之后,可以对每个组应用聚合函数,例如:

  • sum、std、mean、count等等;
  • 可以自定义聚合函数。

5. GroupBy的示例

下面是一个简单的示例,来说明如何使用GroupBy方法:

首先,我们需要导入必要的库及数据集:

import pandas as pd
import numpy as np

#创建数据集
df = pd.DataFrame({'key1' : ['a', 'a', 'b', 'b', 'a'],
          'key2' : ['one', 'two', 'one', 'two', 'one'],
          'data1' : np.random.randn(5),
          'data2' : np.random.randn(5)})

接下来,我们可以使用GroupBy方法来对数据集进行分组:

grouped = df.groupby('key1')

这一步之后,我们得到了一个DataFrameGroupBy对象,可以看到这个对象包含了一个字典,包含了每个组以及相对应的数据:

for name, group in grouped:
    print(name)
    print(group)

#运行结果:
#a
#  key1 key2     data1     data2
#0    a  one -1.028971  0.022379
#1    a  two -0.650119 -1.635439
#4    a  one -1.020785  0.336148
#b
#  key1 key2     data1     data2
#2    b  one -0.825941 -1.411220
#3    b  two  1.442580 -0.228935 

然后,我们可以对每个组应用聚合操作:

#求和
grouped.sum()

#输出结果:
        data1     data2
key1                  
a    -2.699875 -1.276912
b     0.616638 -1.640155

这个例子中,我们使用了sum()函数对每个分组的data1和data2列进行求和。同样,我们也可以传递自定义聚合函数,例如:

def peak_to_peak(arr):
    return arr.max() - arr.min()

grouped.agg(peak_to_peak)

#输出结果:
        data1     data2
key1                  
a     0.378852  1.971587
b     2.268521  1.182285

这个例子中,我们定义了一个自定义聚合函数peak_to_peak,用来计算每个分组的极差。

6. 小结

本文提供了关于Pandas GroupBy方法的完整攻略。我们介绍了GroupBy的定义、语法、分组键、聚合函数以及实例进行说明。希望这篇文章对你有所帮助。