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