在Pandas中,groupby()用于對數(shù)據(jù)進(jìn)行分組操作。通過groupby(),可以將數(shù)據(jù)按照指定的列或多個列進(jìn)行分組,并對每個分組進(jìn)行相應(yīng)的操作,例如計算統(tǒng)計量、聚合、轉(zhuǎn)換等。
groupby()的基本用法是:
df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, dropna=True)
參數(shù)說明:
by
:指定按照哪些列進(jìn)行分組,可以是單個列名、多個列名的列表、Series、字典、函數(shù)等。默認(rèn)為None,表示按照整個DataFrame分組。axis
:指定分組的軸,0表示按行分組,1表示按列分組,默認(rèn)為0。level
:如果DataFrame有多級索引,可以指定按照哪一級索引進(jìn)行分組,默認(rèn)為None。as_index
:指定分組的結(jié)果是否以分組列作為索引,默認(rèn)為True。sort
:指定分組后的結(jié)果是否按照分組列進(jìn)行排序,默認(rèn)為True。group_keys
:指定是否在分組后的結(jié)果中顯示分組鍵,默認(rèn)為True。squeeze
:指定分組后是否對單個分組的結(jié)果進(jìn)行擠壓,默認(rèn)為False。observed
:指定是否使用觀察到的分組的所有取值進(jìn)行分組,默認(rèn)為False。dropna
:指定是否將含有缺失值的分組鍵排除,默認(rèn)為True。groupby()返回一個GroupBy對象,可以對該對象進(jìn)行各種操作,如應(yīng)用聚合函數(shù)(如sum、mean等)、篩選數(shù)據(jù)、轉(zhuǎn)換數(shù)據(jù)等。
具體的操作可以通過GroupBy對象的方法來實現(xiàn),例如:
agg()
: 使用聚合函數(shù)對每個分組進(jìn)行聚合操作。apply()
: 對每個分組應(yīng)用自定義函數(shù)。transform()
: 對每個分組應(yīng)用轉(zhuǎn)換函數(shù)。filter()
: 根據(jù)條件篩選數(shù)據(jù)。示例代碼:
import pandas as pd
# 創(chuàng)建一個DataFrame
data = {'Name': ['Tom', 'Nick', 'John', 'Tom', 'Nick', 'John'],
'Subject': ['Math', 'English', 'Math', 'English', 'Math', 'English'],
'Score': [85, 90, 92, 78, 82, 88]}
df = pd.DataFrame(data)
# 按照Name列進(jìn)行分組,并計算每個分組的平均分?jǐn)?shù)
result = df.groupby('Name')['Score'].mean()
print(result)
輸出結(jié)果:
Name
John 90.0
Nick 86.0
Tom 81.5
Name: Score, dtype: float64
該示例中,首先根據(jù)Name列進(jìn)行分組,然后計算每個分組的平均分?jǐn)?shù)。結(jié)果是一個Series,其中索引是分組的唯一值(Name列的取值),值是每個分組的平均分?jǐn)?shù)。