中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pandas數據分組和聚合操作方法

發布時間:2020-08-21 15:35:36 來源:腳本之家 閱讀:165 作者:Shingle_ 欄目:開發技術

《Python for Data Analysis》

GroupBy

分組運算:split-apply-combine(拆分-應用-合并)

DataFrame可以在其行(axis=0)或列(axis=1)上進行分組。然后,將一個函數應用到各個分組并產生新值。最后,所有這些函數的執行結果會被合并到最終的結果對象中去。

GroupBy的size方法可以返回一個含有分組大小的Series。

對分組進行迭代

for (k1,k2), group in df.groupby(['key1','key2']):
 print k1,k2
 print group

選取一個或一組列

df.groupby(['key1','key2'])[['data2']].mean()

通過字典或Series進行分組

只需將字典或Series傳給groupby即可。

通過函數分組

people.groupby(len).sum() #根據人名的長度進行分組

通過索引級別分組

層次化索引數據,根據索引級別進行聚合,通過level關鍵字傳入級別編號或名稱。

df.groupby(level='cty',axis=1).count()

數據聚合

經過優化的groupby方法

函數名 說明
count 分組中非NA值得數量
sum 非NA值的和
mean 非NA值的平均值
median 非NA值的算術平均數
std、var 無偏(分母為n-1)標準差和方差
min、max 非NA值的最小值和最大值
prod 非NA值的積
first、last 第一個和最后一個非NA值

對于上述描述統計方法,可以將函數名以字符串的形式傳入agg方法。例如:grouped.agg(['mean', 'std'])

如果要使用自己的聚合函數,只需將其傳入aggregate或agg方法即可

def peak_to_peak(arr):
 return arr.max() - arr.min()
grouped.agg(peak_to_peak)

面向列的多函數應用,可以對不同的列使用不同的聚合函數或者一次應用多個函數。

如果傳入一組函數或函數名,得到的DataFrame的列就會以相應的函數命名

如果傳入的是一個由(name,function)元組組成的列表,各個元組的第一個元素就會被用作DataFrame的列名。

不同的列使用不同的聚合函數也可以向agg傳入一個從列名映射到函數的字典

grouped.agg(['mean', 'std', peak_to_peak]) # 1
grouped.agg([('foo', 'mean'), ('bar', np.std)]) # 2
functions = ['count', 'mean', 'max']
result = grouped['tip', 'bill'].agg(functions) # 3
grouped.agg({'tip' : np.max, 'bill' : 'sum'}) # 4

分組級運算和轉換

transform

transform會將一個函數應用到各個分組,然后將結果放置到適當的位置上。如果各個分組產生的是一個標量值,則該值就會被廣播出去。

apply

一般性的“拆分-應用-合并”

tips.groupby('smoker').apply(top)相當于top函數在DataFrame的各個片段上調用,然后結果由pandas.concat組裝到一起,并以分組名稱進行了標記。,于是,最終結果就有了一個層次化索引,其內層索引值來自于原DataFrame.

禁止分組鍵: 分組鍵會跟原始對象的索引共同構成結果對象中的層次化索引。將group_keys=False傳入groupby即可禁止該效果。tips.groupby('smoker', group_keys=False).apply(top)

在GroupBy對象上調用describe相當于f = lambda x : x.describe(); grouped.apply(f).

數據匯總工具

透視表 pivot_table

根據一個或多個鍵對數據進行聚合,并根據行和列上的分組鍵將數據分配到各個矩形區域。

tips.pivot_table('tip_pct', index=['time', 'size', 'smoker'], 
columns='day', aggfunc='mean', fill_value=0)

參數名 說明
values 待聚合的列的名稱。默認所有列
rows 用于分組的列名或者其他分組鍵,出現在結果透視表的行
cols 用于分組的列名或者其他分組鍵,出現在結果透視表的列
aggfunc 聚合函數或函數列表,默認“mean”。可以是任何對groupby有效的函數
fill_value 用于替換結果表中缺失值
margins 添加行/列小計和總計,默認為False

交叉表 crosstab

是一種用于計算分組頻率的特殊透視表。

pd.crosstab([tips.time, tips.day], tips.smoker, margins=True)

以上這篇pandas數據分組和聚合操作方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绍兴市| 荥经县| 锦屏县| 安平县| 偃师市| 汕头市| 太湖县| 穆棱市| 肥乡县| 文昌市| 崇义县| 栾城县| 吴堡县| 丹阳市| 疏勒县| 万年县| 祁连县| 曲周县| 诸暨市| 民县| 沙坪坝区| 库伦旗| 呼伦贝尔市| 光泽县| 宜城市| 德州市| 中江县| 资源县| 子长县| 喀什市| 麻栗坡县| 兴仁县| 南充市| 长宁县| 隆昌县| 德阳市| 横峰县| 新竹县| 十堰市| 桦川县| 汉源县|