當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python pandas.Series.groupby用法及代碼示例

用法:

Series.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=NoDefault.no_default, observed=False, dropna=True)

使用映射器或按一係列列對係列進行分組。

groupby 操作涉及拆分對象、應用函數和組合結果的某種組合。這可用於對大量數據進行分組並在這些組上進行計算操作。

參數

by映射、函數、標簽或標簽列表

用於確定 groupby 的組。如果by 是一個函數,它會在對象索引的每個值上調用。如果傳遞了 dict 或 Series,則 Series 或 dict VALUES 將用於確定組(Series 的值首先對齊;參見 .align() 方法)。如果傳遞了長度等於所選軸的列表或 ndarray(請參閱 groupby 用戶指南),則使用這些值 as-is 來確定組。標簽或標簽列表可以通過 self 中的列傳遞給分組。請注意,元組被解釋為(單個)鍵。

axis{0 或 ‘index’,1 或 ‘columns’},默認 0

沿行 (0) 或列 (1) 拆分。

levelint,級別名稱或此類的序列,默認無

如果軸是 MultiIndex(分層),則按特定級別或多個級別分組。

as_index布爾值,默認為真

對於聚合輸出,返回以組標簽為索引的對象。僅與 DataFrame 輸入相關。 as_index=False 實際上是 “SQL-style” 分組輸出。

sort布爾值,默認為真

對組鍵進行排序。關閉此函數可獲得更好的性能。請注意,這不會影響每組內的觀察順序。 Groupby 保留每個組內的行順序。

group_keys布爾值,默認為真

調用 apply 時,將組鍵添加到索引以識別片段。

squeeze布爾值,默認為 False

如果可能,減少返回類型的維數,否則返回一致的類型。

observed布爾值,默認為 False

這僅適用於任何 groupers 是分類的。如果為真:僅顯示分類分組的觀察值。如果為 False:顯示分類分組的所有值。

dropna布爾值,默認為真

如果為 True,並且組鍵包含 NA 值,則 NA 值連同行/列將被刪除。如果為 False,NA 值也將被視為組中的鍵。

返回

係列分組

返回包含有關組的信息的 groupby 對象。

注意

有關更詳細的用法和示例,請參閱用戶指南,包括將對象分成組、遍曆組、選擇組、聚合等。

例子

>>> ser = pd.Series([390., 350., 30., 20.],
...                 index=['Falcon', 'Falcon', 'Parrot', 'Parrot'], name="Max Speed")
>>> ser
Falcon    390.0
Falcon    350.0
Parrot     30.0
Parrot     20.0
Name:Max Speed, dtype:float64
>>> ser.groupby(["a", "b", "a", "b"]).mean()
a    210.0
b    185.0
Name:Max Speed, dtype:float64
>>> ser.groupby(level=0).mean()
Falcon    370.0
Parrot     25.0
Name:Max Speed, dtype:float64
>>> ser.groupby(ser > 100).mean()
Max Speed
False     25.0
True     370.0
Name:Max Speed, dtype:float64

按索引分組

我們可以使用 level 參數對分層索引的不同級別進行分組:

>>> arrays = [['Falcon', 'Falcon', 'Parrot', 'Parrot'],
...           ['Captive', 'Wild', 'Captive', 'Wild']]
>>> index = pd.MultiIndex.from_arrays(arrays, names=('Animal', 'Type'))
>>> ser = pd.Series([390., 350., 30., 20.], index=index, name="Max Speed")
>>> ser
Animal  Type
Falcon  Captive    390.0
        Wild       350.0
Parrot  Captive     30.0
        Wild        20.0
Name:Max Speed, dtype:float64
>>> ser.groupby(level=0).mean()
Animal
Falcon    370.0
Parrot     25.0
Name:Max Speed, dtype:float64
>>> ser.groupby(level="Type").mean()
Type
Captive    210.0
Wild       185.0
Name:Max Speed, dtype:float64

我們還可以通過定義 dropna 參數來選擇是否在組鍵中包含 NA ,默認設置為 True

>>> ser = pd.Series([1, 2, 3, 3], index=["a", 'a', 'b', np.nan])
>>> ser.groupby(level=0).sum()
a    3
b    3
dtype:int64
>>> ser.groupby(level=0, dropna=False).sum()
a    3
b    3
NaN  3
dtype:int64
>>> arrays = ['Falcon', 'Falcon', 'Parrot', 'Parrot']
>>> ser = pd.Series([390., 350., 30., 20.], index=arrays, name="Max Speed")
>>> ser.groupby(["a", "b", "a", np.nan]).mean()
a    210.0
b    350.0
Name:Max Speed, dtype:float64
>>> ser.groupby(["a", "b", "a", np.nan], dropna=False).mean()
a    210.0
b    350.0
NaN   20.0
Name:Max Speed, dtype:float64

相關用法


注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.Series.groupby。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。