首頁 >後端開發 >Python教學 >如何使用群體平均值估算 Pandas 中的缺失值?

如何使用群體平均值估算 Pandas 中的缺失值?

Susan Sarandon
Susan Sarandon原創
2024-12-05 16:29:10592瀏覽

How to Impute Missing Values in Pandas Using Group Means?

Pandas 中組平均值的NaN 插補

使用每組內的平均值填充缺失值是處理表格資料時的一項常見任務。考慮以下帶有缺失值的 DataFrame:

df = pd.DataFrame({'value': [1, np.nan, np.nan, 2, 3, 1, 3, np.nan, 3],
                   'name': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C']})

我們的目標是根據「名稱」欄位用每組的平均值來估算缺失值。

為了實現這個目標,我們可以利用Pandas中的groupby()和transform()函數:

grouped = df.groupby('name').mean()
df["value"] = df.groupby("name").transform(lambda x: x.fillna(x.mean()))

groupby()函數根據'name' 列,mean() 計算每個組別的平均值。 Transform() 函數將此平均值套用於每個組中的每一行,並填入缺失值。

產生的DataFrame:

print(df)

  name  value
0    A      1
1    A      1
2    B      2
3    B      2
4    B      3
5    B      1
6    C      3
7    C      3
8    C      3

解釋:

  • mean() 函數產生一個分組的新DataFrame means.
  • transform() 函數將fillna()方法應用於每個群組,使用平均值作為填充值。這將使用每個組特定的平均值來填充缺失值。

替代解決方案:

基於組別的缺失值插補的另一種方法是:

impute_cols = ['value']
df[impute_cols] = df[impute_cols].fillna(df.groupby('name')[impute_cols].transform('mean'))

兩種方法都達到相同的結果,但後一種方法在插補多個時提供了更大的靈活性專欄。

以上是如何使用群體平均值估算 Pandas 中的缺失值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn