1. apply與transform
首先講一下apply() 與transform()的相同點(diǎn)與不同點(diǎn)
相同點(diǎn):
都能針對(duì)dataframe完成特征的計(jì)算,并且常常與groupby()方法一起使用。
不同點(diǎn):
apply()里面可以跟自定義的函數(shù),包括簡(jiǎn)單的求和函數(shù)以及復(fù)雜的特征間的差值函數(shù)等(注:apply不能直接使用agg()方法 / transform()中的python內(nèi)置函數(shù),例如sum、max、min、'count‘等方法)
transform() 里面不能跟自定義的特征交互函數(shù),因?yàn)閠ransform是真針對(duì)每一元素(即每一列特征操作)進(jìn)行計(jì)算,也就是說(shuō)在使用 transform() 方法時(shí),需要記得三點(diǎn):
1、它只能對(duì)每一列進(jìn)行計(jì)算,所以在groupby()之后,.transform()之前是要指定要操作的列,這點(diǎn)也與apply有很大的不同。
2、由于是只能對(duì)每一列計(jì)算,所以方法的通用性相比apply()就局限了很多,例如只能求列的最大/最小/均值/方差/分箱等操作
3、transform還有什么用呢?最簡(jiǎn)單的情況是試圖將函數(shù)的結(jié)果分配回原始的dataframe。也就是說(shuō)返回的shape是(len(df),1)。注:如果與groupby()方法聯(lián)合使用,需要對(duì)值進(jìn)行去重
2. 各方法耗時(shí)
分別計(jì)算在同樣簡(jiǎn)單需求下各組合方法的計(jì)算時(shí)長(zhǎng)
2.1 transform() 方法+自定義函數(shù)
2.2 transform() 方法+python內(nèi)置方法
2.3 apply() 方法+自定義函數(shù)
2.4 agg() 方法+自定義函數(shù)
新聞熱點(diǎn)
疑難解答
圖片精選