使用agg方法聚合数据
agg,aggregate方法都支持对每个分组应用某函数,包括Python内置函数或自定义函数。同时这两个方法能够也能够直接对DataFrame进行函数应用操作。
在正常使用过程中,agg函数和aggregate函数对DataFrame对象操作时功能几乎完全相同,因此只需要掌握其中一个函数即可。它们的参数说明如下表。
**DataFrame.agg(func, axis=0, *args, **kwargs)
DataFrame.aggregate(func, axis=0, *args, kwargs)
[让我看看]数据长什么样子
import pandas as pd
import numpy as np
from datetime import datetime
# 读取数据保存为data
data = pd.read_csv("./ex1.csv",encoding = 'gbk')
print('a和b的和与均值为:')
data[['a','b']].agg([np.sum,np.mean])
对于某个字段希望只做求均值操作,而对另一个字段则希望只做求和操作,可以使用字典的方式,将两个字段名分别作为key,然后将NumPy库的求和与求均值的函数分别作为value,如
print('a和与b的均值为:')
data.agg({
'a':np.sum,'b':np.mean})
在某些时候希望求出某个字段的多个统计量,对某些字段则只需求一个统计量,这时只需要将字典对应的key的value转换成列表,将列表元素转变为多个目标的统计量即可
print('a的总和与b的总和与均值')
data.agg({
'a':np.sum,'b':[np.sum,np.mean]})
# 自定义函数求两倍的和
def DoubleSum(data):
s = data.sum()*2
return s
print('输出a的两倍总和为:','\n',data.agg({
'a':DoubleSum},axis = 0))
在agg方法可传入读者自定义的函数。
使用自定义函数需要注意的是NumPy库中的函数np.mean,np.median,np.prod,np.sum,np.std,np.var能够在agg中直接使用,但是在自定义函数中使用NumPy库中的这些函数,如果计算的时候是单个序列则会无法得出想要的结果,如果是多列数据同时计算则不会出现这种问题,下面试验一下下
# 自定义函数两倍的和
def DoubleSum1(data):
s = np.sum(data)*2
return s
print('输出a的两倍总和为:','\n',data.agg({
'a':DoubleSum1},axis = 0))