NaN 值補植
來用 .transform() 方法做數值補植吧。在前一個任務中,你建立了 DataFrame fheroes,其中已移除了 bmi 觀測值數量不足的群組。不過,我們的 bmi 欄位仍有許多遺漏值(NaN)。給定 fheroes 的兩個副本(imp_globmean 與 imp_grpmean),你的任務是將 bmi 欄中的 NaN,分別以整體平均值,以及以由 Publisher 與 Alignment 因子所定義之每個群組的平均值來補植。
提示:pandas 的 Series 與 NumPy 陣列都有 .fillna() 這個方法,可將所有遇到的 NaN 以參數指定的值取代。
本練習屬於課程
Python 程式面試題實作練習
練習說明
- 定義一個 lambda 函式,將
series中的NaN以其平均值補植。 - 將
imp_globmean的bmi欄位中NaN以整體平均值補植。 - 將
imp_grpmean的bmi欄位中NaN以各群組的平均值補植。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Define a lambda function that imputes NaN values in series
impute = lambda series: ____
# Impute NaNs in the bmi column of imp_globmean
imp_globmean['bmi'] = ____
print("Global mean = " + str(fheroes['bmi'].mean()) + "\n")
groups = imp_grpmean.groupby(['Publisher', 'Alignment'])
# Impute NaNs in the bmi column of imp_grpmean
imp_grpmean['bmi'] = groups[____].____
print(groups['bmi'].mean())