Pythonでカテゴリカル変数の欠損値を補完する方法


  1. 最頻値による補完: カテゴリカル変数の欠損値を最頻値(最も頻繁に出現する値)で補完する方法です。pandasライブラリのmode()関数を使用して最頻値を計算し、fillna()関数を使用して欠損値を補完します。

    import pandas as pd
    # DataFrameの'column_name'列の欠損値を最頻値で補完する
    df['column_name'].fillna(df['column_name'].mode()[0], inplace=True)
  2. ラベルの追加: 欠損値を表す新しいラベルをデータセットに追加する方法です。例えば、"Unknown"や"Missing"などの値を欠損値として扱います。

    import pandas as pd
    # DataFrameの'column_name'列の欠損値を"Unknown"で置き換える
    df['column_name'].fillna("Unknown", inplace=True)
  3. 機械学習モデルによる予測: 欠損値を補完するために、他の特徴量を使用して予測モデルを構築する方法もあります。欠損値のある特徴量を目的変数とし、他の特徴量を入力として機械学習モデルを訓練します。訓練されたモデルを使用して欠損値を予測し、補完します。

    import pandas as pd
    from sklearn.ensemble import RandomForestClassifier
    # 欠損値を補完するための特徴量と目的変数を抽出
    X_train = df[df['column_name'].notnull()]
    y_train = X_train['column_name']
    X_test = df[df['column_name'].isnull()]
    # 機械学習モデルを訓練して欠損値を予測
    model = RandomForestClassifier()
    model.fit(X_train.drop('column_name', axis=1), y_train)
    predicted_values = model.predict(X_test.drop('column_name', axis=1))
    # 欠損値を補完
    df.loc[df['column_name'].isnull(), 'column_name'] = predicted_values

これらは一般的な欠損値補完の方法ですが、データセットや問題によって最適な方法が異なる場合もあります。欠損値の性質やデータセットの特徴をよく理解し、適切な補完方法を選択することが重要です。また、欠損値を補完する前にデータの前処理や特徴量エンジニアリングを行うことも推奨されます。