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
解釋:
替代解決方案:
基於組別的缺失值插補的另一種方法是:
impute_cols = ['value'] df[impute_cols] = df[impute_cols].fillna(df.groupby('name')[impute_cols].transform('mean'))
兩種方法都達到相同的結果,但後一種方法在插補多個時提供了更大的靈活性專欄。
以上是如何使用群體平均值估算 Pandas 中的缺失值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!