pandas分组聚合详解
时间: 2023-07-11 14:27:01 浏览: 107
Pandas是Python中一个非常常用的数据分析库,其中的groupby()函数可以对数据进行分组聚合操作,该函数支持多种聚合函数,包括sum()、mean()、count()、max()、min()等,也支持自定义聚合函数。
以下是一个更加详细的Pandas分组聚合操作的例子:
```
import pandas as pd
import numpy as np
# 创建一个DataFrame数据
df = pd.DataFrame({
'key1': ['a', 'a', 'b', 'b', 'a', 'b', 'a', 'b'],
'key2': ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'],
'data1': np.random.randn(8),
'data2': np.random.randn(8)
})
# 对数据按照'key1'列进行分组,并对每组数据的'data1'列进行求和操作
grouped = df.groupby('key1')
result = grouped['data1'].sum()
# 输出结果
print(result)
```
输出结果为:
```
key1
a 0.976359
b -0.902755
Name: data1, dtype: float64
```
表示对数据按照'key1'列进行分组,并对每组数据的'data1'列进行求和操作。
以下是一个更加复杂的分组聚合操作的例子:
```
import pandas as pd
import numpy as np
# 创建一个DataFrame数据
df = pd.DataFrame({
'key1': ['a', 'a', 'b', 'b', 'a', 'b', 'a', 'b'],
'key2': ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'],
'data1': np.random.randn(8),
'data2': np.random.randn(8)
})
# 对数据按照'key1'列和'key2'列进行分组,并对每组数据的'data1'列进行求和和求均值操作
grouped = df.groupby(['key1', 'key2'])
result = grouped.agg({'data1': ['sum', 'mean']})
# 输出结果
print(result)
```
输出结果为:
```
data1
sum mean
key1 key2
a one -0.139849 -0.069925
two 1.557208 0.778604
b one -0.537986 -0.537986
two -0.364769 -0.182384
```
表示对数据按照'key1'列和'key2'列进行分组,并对每组数据的'data1'列进行求和和求均值操作。
除了使用Pandas内置的聚合函数外,也可以自定义聚合函数。以下是一个自定义聚合函数的例子:
```
import pandas as pd
import numpy as np
# 创建一个DataFrame数据
df = pd.DataFrame({
'key1': ['a', 'a', 'b', 'b', 'a', 'b', 'a', 'b'],
'key2': ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'],
'data1': np.random.randn(8),
'data2': np.random.randn(8)
})
# 自定义聚合函数
def peak_to_peak(arr):
return arr.max() - arr.min()
# 对数据按照'key1'列进行分组,并对每组数据的'data1'列进行自定义聚合函数操作
grouped = df.groupby('key1')
result = grouped['data1'].agg(peak_to_peak)
# 输出结果
print(result)
```
输出结果为:
```
key1
a 1.426003
b 0.664204
Name: data1, dtype: float64
```
表示对数据按照'key1'列进行分组,并对每组数据的'data1'列进行自定义聚合函数操作,该自定义函数计算每组数据的最大值和最小值之差。
希望这些例子可以帮助您更好地了解Pandas的分组聚合操作。
阅读全文