于數(shù)據(jù)的分組和分組運(yùn)算主要是指groupby函數(shù)的應(yīng)用,具體函數(shù)的規(guī)則如下:
df[](指輸出數(shù)據(jù)的結(jié)果屬性名稱).groupby([df[屬性],df[屬性])(指分類的屬性,數(shù)據(jù)的限定定語,可以有多個(gè)).mean()(對(duì)于數(shù)據(jù)的計(jì)算方式——函數(shù)名稱)
舉例如下:
print(df["評(píng)分"].groupby([df["地區(qū)"],df["類型"]]).mean())
#上面語句的功能是輸出表格所有數(shù)據(jù)中不同地區(qū)不同類型的評(píng)分?jǐn)?shù)據(jù)平均值
二、單類分組
A.groupby("性別")
首先,我們有一個(gè)變量A,數(shù)據(jù)類型是DataFrame
想要按照【性別】進(jìn)行分組
得到的結(jié)果是一個(gè)Groupby對(duì)象,還沒有進(jìn)行任何的運(yùn)算。
describe()
描述組內(nèi)數(shù)據(jù)的基本統(tǒng)計(jì)量
A.groupby("性別").describe().unstack()
* 只有數(shù)字類型的列數(shù)據(jù)才會(huì)計(jì)算統(tǒng)計(jì)
* 示例里面數(shù)字類型的數(shù)據(jù)有兩列 【班級(jí)】和【身高】
但是,我們并不需要統(tǒng)計(jì)班級(jí)的均值等信息,只需要【身高】,所以做一下小的改動(dòng):
A.groupby("性別")["身高"].describe().unstack()
unstack()
索引重排
上面的例子里面用到了一個(gè)小的技巧,讓運(yùn)算結(jié)果更便于對(duì)比查看,感興趣的同學(xué)可以自行去除unstack,比較一下顯示的效果
三、多類分組
A.groupby( ["班級(jí)","性別"])
單獨(dú)用groupby,我們得到的還是一個(gè) Groupby 對(duì)象。
mean()
組內(nèi)均值計(jì)算
DataFrame的很多函數(shù)可以直接運(yùn)用到Groupby對(duì)象上。
我們還可以一次運(yùn)用多個(gè)函數(shù)計(jì)算
A.groupby( ["班級(jí)","性別"]).agg([np.sum, np.mean, np.std]) # 一次計(jì)算了三個(gè)
agg()
分組多個(gè)運(yùn)算
對(duì)分組進(jìn)行過濾,保留滿足()條件的分組
以上就是 groupby 最經(jīng)常用到的功能了。
用 first(),tail()截取每組前后幾個(gè)數(shù)據(jù)
用 apply()對(duì)每組進(jìn)行(自定義)函數(shù)運(yùn)算
用 filter()選取滿足特定條件的分組








暫無數(shù)據(jù)