agg、apply和transform的区别

相同点:

都能针对Dataframe的特征的计算,常与groupby()方法连用

不同点:

1. agg():

调用时要指定字段,apply默认传入整个Dataframe

2. apply():

参数可以是自定义函数,包括简单的求和函数以及复制的特征间的差值函数等。apply不能直接使用python的内置函数,比如sum、max、min。

2. transform():

参数不能是自定义的特征交互函数,因为transform是针对每一元素(即每一列特征操作)进行计算。使用transform要注意:

  • 它只能对每一列进行计算,所以在groupby之后,transform之前是要指定操作的列,这点与apply有很大的不同
  • 由于是对每一列进行计算,所以方法通用性性比apply就局限了很多,例如,只能求列的最大值,最小值,均值,方差,分箱等操作。

处理效率上:

agg()函数+内置函数是计算速度最快的,其次是transform()+内置方法。

agg()或者apply()+自定义函数的处理速度差不多,而这里特别要注意transform()+自定义函数计算速度是最慢的,尽量避免使用。

 

你可能感兴趣的:(python,pandas,python,pandas)