1.聚合函数aggregate():
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(3, 4).round(3),columns = ['A', 'B', 'C', 'D'])
print(df)
(1)整体聚合:df.aggregate(np.sum),默认按列聚合,内置函数可更换
(2)对某一列聚合:df['A'].aggregate(np.sum)
(3)对多列分别聚合:df [ ['A','B'] ] .aggregate(np.sum)——>注意双层括号代表选取多列
(4)对每个列都运用不同函数:df [ ['A','B'] ] .aggregate( [ np.sum,np.mean ])
(5)对单个列运用不同函数:df ['A'].aggregate( [ np.sum,np.mean ])
(6)对不同列运用不同函数:df.aggregate( {'A':np.sum,'B':np.mean} )
2.拆分-应用-组合
(1)拆分:groupby(“key”)函数,沿任意轴分组,指定的key键可作为组名
import pandas as pd
import numpy as np
df = pd.DataFrame({'Name': ['John', 'Helen', 'Sona', 'Ella'],
'score': [82, 98, 91, 87],
'option_course': ['C#','Python','Java','C']} )
print(df)
#groupby分组,并用groups查看分组结果
print(df.groupby('score').groups)
#使用get_group获取某个组的内容
print(df.groupby('score').get_group(91))
(2)应用:对groupby对象应用多个聚合函数时使用agg()/aggregate()函数,结果一致
import pandas as pd
import numpy as np
df = pd.DataFrame({'name': ['John', 'Helen', 'Sona', 'Ella'],
'score': [82, 98, 91, 87],
'option_course': ['C#','Python','Java','C']} )
print(df)
res=df.groupby('name')
print(res['score'].agg(np.mean))
print(res['score'].agg([np.sum,np.mean]))
(3)组合:行列转换transform与过滤filter
transform( func() ):传入函数,返回一个与自身形状相同的df
函数理解:如何理解pandas中的transform函数 - 知乎 (zhihu.com)
filter函数分为两种情况:
——>与groupby合用时,可自定义筛选条件
——>单独使用时,如下所示,除去轴方向选择,其他条件不可同时出现
df.filter(
items=对轴标签筛选
like: 模糊查询
regex: 正则匹配
axis=0/1
)
函数理解例子:
Python学习笔记:pd.filter、query筛选数据 - Hider1214 - 博客园 (cnblogs.com)