首頁 >後端開發 >Python教學 >如何使用「transform」用群組平均值填入缺少的 DataFrame 值?

如何使用「transform」用群組平均值填入缺少的 DataFrame 值?

Patricia Arquette
Patricia Arquette原創
2024-12-27 07:26:13132瀏覽

How to Fill Missing DataFrame Values with Group Means Using `transform`?

使用變換用組均值填充缺失值

在包含缺失值的 DataFrame 中,通常用有意義的值填充它們。一種方法是計算每個組的平均值。

考慮以下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']
})

目標是用各自「NaN」值中的平均值填入所有「NaN」值

為了實現這一點,我們可以將轉換函數與groupby 操作結合使用。轉換函數對每個群組套用指定的轉換,而 groupby 操作則根據特定欄位(在本例中為「名稱」)將 DataFrame 拆分為群組。

解如下:

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

fillna 函數以指定值(在本例中為平均值)填入缺失值。 lambda 函數確保在填充之前計算每個組的平均值。

產生的 DataFrame 將使用每組的平均值填充缺失值:

  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

以上是如何使用「transform」用群組平均值填入缺少的 DataFrame 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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