1

次のデータセットがあるとします

コード カテゴリー エネルギー 砂糖 タンパク質
0 01 B 936 NaN 7.8
1 02 NaN NaN 15.0 NaN
2 03 1569.0 23 4.1
3 04 NaN 826 NaN 3
4 05 B 1345 22 5.1
5 06 NaN 17 NaN
6 10 C 826 NaN 3
7 11 C 1345 26 5.1
8 101 B NaN 18 6.1
9 102 B 636 NaN 7.8
10 103 NaN NaN 15.0 NaN
11 104 1569.0 23 4.1
12 105 C 813 NaN 3.5

column を考慮してSimpleImputerで代入を行いたいと思いますcategory

つまり、製品の を考慮して平均を割り当てたいと思いcategoryます。
商品にカテゴリがない場合は、カテゴリのない商品の平均を考えたいと思いますcategory

codeでは、 01の砂糖を完成させます。Bsugarsを持つすべての製品のみを検討します。category

コード カテゴリー エネルギー 砂糖 タンパク質
0 01 B 936 NaN 7.8
4 05 B 1345 22 5.1
8 101 B NaN 18 6.1
9 102 B 636 NaN 7.8

以下に示すように、私は似たようなことをしました。しかし、 SimpleImputerでそれを行う必要があります。
明確にするために、以下のケースでは、列の平均categoryなしでNaN を完成させました。

for col in df.columns:
    if df[col].dtypes == "float64":
        df.loc[df[col].isna() & df["category"].notnull(), col] = df["categories"].map(df.groupby("category")[col].mean())
        df[col].fillna(df[col].mean(), inplace=True)
4

1 に答える 1