pandas agg
在数据分析和处理过程中,经常会需要对数据进行聚合操作,例如统计每个组的总和、均值、计数等。Pandas 提供了 groupby()
函数和 agg()
函数来实现这种聚合操作,可以方便地对数据进行分组并进行多种统计计算。
1. groupby()
函数
groupby()
函数用于将数据按照指定的列进行分组,返回一个 DataFrameGroupBy
对象。通过 groupby()
函数可以将数据划分为多个组,然后对每个组进行统计计算。
下面是一个示例,演示如何使用 groupby()
函数将数据按照 key
列分组,并计算每个组的平均值:
import pandas as pd
data = {
'key': ['A', 'B', 'A', 'B', 'A', 'B'],
'value': [1, 2, 3, 4, 5, 6]
}
df = pd.DataFrame(data)
grouped = df.groupby('key')
result = grouped.mean()
print(result)
运行上述代码,输出如下:
value
key
A 3.0
B 4.0
上面的代码首先创建了一个包含键值对的字典 data
,然后通过 pd.DataFrame()
函数创建了一个 DataFrame df
。接着调用 groupby()
函数按照 key
列进行分组,然后调用 mean()
函数计算每个组的平均值。
2. agg()
函数
agg()
函数是 DataFrameGroupBy
对象的方法,用于对分组后的数据进行聚合统计计算。agg()
函数接受一个字典作为参数,字典的 key 是需要计算的列名,value 是需要计算的函数列表。
下面是一个示例,演示如何使用 agg()
函数计算每个组的总和和均值:
import pandas as pd
data = {
'key': ['A', 'B', 'A', 'B', 'A', 'B'],
'value1': [1, 2, 3, 4, 5, 6],
'value2': [10, 20, 30, 40, 50, 60]
}
df = pd.DataFrame(data)
grouped = df.groupby('key')
result = grouped.agg({'value1': ['sum', 'mean'], 'value2': 'sum'})
print(result)
运行上述代码,输出如下:
value1 value2
sum mean sum
key
A 9 3 90
B 12 4 120
上面的代码首先创建了一个包含键值对的字典 data
,然后通过 pd.DataFrame()
函数创建了一个 DataFrame df
。接着调用 groupby()
函数按照 key
列进行分组,然后调用 agg()
函数计算每个组的 value1
列的总和和均值,以及 value2
列的总和。
除了传入函数列表外,agg()
函数还支持传入自定义函数。下面是一个示例,演示如何通过传入自定义函数计算每个组的最大值减去最小值:
import pandas as pd
data = {
'key': ['A', 'B', 'A', 'B', 'A', 'B'],
'value': [1, 2, 3, 4, 5, 6]
}
df = pd.DataFrame(data)
grouped = df.groupby('key')
result = grouped.agg(lambda x: x.max() - x.min())
print(result)
运行上述代码,输出如下:
value
key
A 4
B 4
上面的代码传入了一个 lambda 函数,计算每个组的最大值减去最小值,从而得到每个组的范围。
3. 总结
通过本文的介绍,我们了解了 Pandas 中 agg()
函数的基本用法,以及如何通过 groupby()
函数和 agg()
函数实现对数据的灵活统计计算。在实际数据处理过程中,agg()
函数是非常有用的工具,能够帮助我们快速对数据进行分组聚合操作,从而得到更直观、更有用的统计结果。