.describe() python_python的apply应用:一般性的“拆分-应用-合并”,附加详细讲解
跟aggregate一樣,transform也是一個(gè)有著嚴(yán)格條件的特殊函數(shù):傳入的函數(shù)只能產(chǎn)生兩種結(jié)果,要么產(chǎn)生一個(gè)可以傳播的標(biāo)量值(如np.mean),要么產(chǎn)生一個(gè)相同大小的結(jié)果數(shù)組。最一般化的GroupBy方法是apply,apply會(huì)將待處理的對(duì)象拆分成多個(gè)片段,然后對(duì)各片段調(diào)用傳入的函數(shù),最后嘗試將各片段組合到一起。
apply方法
舉例:根據(jù)分組選出最高的5個(gè)tip_pct值。
首先,編寫(xiě)一個(gè)選取指定列具有最大值的行的函數(shù)。(原文比較拗口,其實(shí)就是“在 指定列找出最大值,然后把這個(gè)值所在的行選取出來(lái)。”)
In [1]: def top(df,n=5,column='tip_pct'): ...: return df.sort_index(by=column)[-n:] ...:新寫(xiě)法:注意與上面的差別
In [2]: def top(df,n=5,column='計(jì)劃發(fā)出單量'): ...: return df.sort_values(by=column)[-n:] ...:In [3]: top(tips,n=6)Out[3]: total_bill tip smoker day time size tip_pct109 14.31 4.00 Yes Sat Dinner 2 0.279525183 23.17 6.50 Yes Sun Dinner 4 0.280535232 11.61 3.39 No Sat Dinner 2 0.29199067 3.07 1.00 Yes Sat Dinner 1 0.325733178 9.60 4.00 Yes Sun Dinner 2 0.416667172 7.25 5.15 Yes Sun Dinner 2 0.710345如果對(duì)smoker分組并用該函數(shù)調(diào)用apply,就會(huì)得到:
top函數(shù)在DataFrame的各個(gè)片段上調(diào)用,然后結(jié)果由pandas.concat組裝到一起,并以分組名稱進(jìn)行了標(biāo)記。于是,最終結(jié)果就有了一個(gè)層次化索引,其內(nèi)層索引值來(lái)自原DataFrame。
如果傳給apply的函數(shù)能夠接受其他參數(shù)或關(guān)鍵字,則可以將這些內(nèi)容放在函數(shù)名后面一并傳入:
注意:除這些基本用法之外,能否充分發(fā)揮apply的威力很大程度上取決于你的創(chuàng)造力。傳入的那個(gè)函數(shù)能做什么全由你說(shuō)了算,它只需返回一個(gè)pandas對(duì)象或標(biāo)量值即可。本章后續(xù)部分的示例主要用于講解如何利用groupby解決各種各樣的問(wèn)題。
在GroupBy對(duì)象上調(diào)用describe:
在GroupBy中,當(dāng)調(diào)用諸如describe之類的方法時(shí),實(shí)際上只是應(yīng)用了下面兩條代碼的快捷方式而已:
f = lambda x: x.describe()
Grouped.apply(f)
禁止分組鍵:group_keys=False
分組鍵會(huì)跟原始對(duì)象的索引共同構(gòu)成結(jié)果對(duì)象中的層次化索引。將group_keys=False傳入groupby即可禁止該效果:
python好書(shū)推薦
推薦一本python好書(shū),初學(xué)者和數(shù)據(jù)分析必備,小編已讀:
總結(jié)
以上是生活随笔為你收集整理的.describe() python_python的apply应用:一般性的“拆分-应用-合并”,附加详细讲解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jquery动态绑定事件的方法_Jque
- 下一篇: dbeaver导出表结构和数据_mall