Pandas實(shí)用技巧:SAC機(jī)制!
本文轉(zhuǎn)載自微信公眾號(hào)「尤而小屋」,作者Peter 。轉(zhuǎn)載本文請(qǐng)聯(lián)系Peter的公眾號(hào)。
大家好,我是Peter~
本文給大家介紹的是Pandas中非常實(shí)用的SAC過(guò)程。首先我們需要明白什么是SAC機(jī)制
SAC
SAC指的是分組操作中的 Split-Apply-Combine 3個(gè)過(guò)程,分別代表的數(shù)據(jù)的切割、應(yīng)用和組合。
1、Split:切割的過(guò)程,就是通過(guò)某個(gè)指定的信息進(jìn)行分組,生成不同的組別
2、Apply:應(yīng)用的過(guò)程,對(duì)不同的組別使用不同的功能函數(shù),比如求和、求均值、最值等;函數(shù)可以python、pandas等內(nèi)置函數(shù),也可以是自定義的函數(shù)來(lái)實(shí)現(xiàn)各種功能等
3、Combine:組合的過(guò)程,將Apply應(yīng)用之后的結(jié)果再次組合在一起,得到最終的結(jié)果
通常情況下,SAC過(guò)程都是需要和groupby函數(shù)聯(lián)合使用。
圖解SAC
下面有兩張圖能夠解釋SAC的過(guò)程。
圖1
圖1中,我們將數(shù)據(jù)進(jìn)行g(shù)roup分組操作,切分成3種顏色,3種顏色代表3個(gè)不同的組別;對(duì)3個(gè)不同的組別使用函數(shù)foo(),函數(shù)可以內(nèi)置或者自定義。
最終將3個(gè)組別應(yīng)用了foo函數(shù)之后的結(jié)果進(jìn)行組合。下面給了一個(gè)例子:
圖2
- key是待切分的字段,data是待應(yīng)用的數(shù)據(jù)
- Split過(guò)程:通過(guò)ABC分成3個(gè)組別
- Apply過(guò)程:3個(gè)組別應(yīng)用某個(gè)函數(shù)規(guī)則
- Combine過(guò)程:將求和(sum就是指定規(guī)則)的結(jié)果組合在一起
Pandas應(yīng)用SAC
在這里我們使用鳶尾花iris數(shù)據(jù)集來(lái)解釋?zhuān)?/p>
這個(gè)數(shù)據(jù)集總共是150條,我們隨機(jī)取出10條
下面是SAC過(guò)程:
df1中我們使用的求和,df2中使用的是求均值。
在后面的文章會(huì)介紹:
- groupby對(duì)象的內(nèi)部機(jī)制
- 如何通過(guò)agg函數(shù)來(lái)實(shí)現(xiàn)對(duì)不同的字段指定不同的函數(shù)
- 如何對(duì)分組數(shù)據(jù)實(shí)現(xiàn)過(guò)濾filter?