溫馨提示×

Pandas中g(shù)roupby的用法是什么

小億
92
2024-01-19 16:26:52
欄目: 編程語言

在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ù)。

0