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']})
私たちの目標は、欠損値を「name」列に基づいて各グループの平均値で代入することです。
これを達成するには、次のようにします。 Pandas では、groupby() 関数とtransform() 関数を利用できます。
grouped = df.groupby('name').mean() df["value"] = df.groupby("name").transform(lambda x: x.fillna(x.mean()))
groupby() 関数は、 「name」列、mean() は各グループの平均値を計算します。 transform() 関数は、この平均値を各グループ内の各行に適用し、欠損値を埋めます。
結果のデータフレーム:
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'))
どちらの方法でも同じ結果が得られますが、後者のアプローチの方が、複数の値を代入する場合に柔軟性が高くなります。列。
以上がグループ平均を使用してパンダの欠損値を代入する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。