Вменение пропущенного значения для категориальных переменных в Python: подробное руководство

Обработка пропущенных значений — распространенная проблема при анализе данных и задачах машинного обучения. Когда дело доходит до категориальных переменных, вменение пропущенных значений требует других методов по сравнению с числовыми переменными. В этой статье мы рассмотрим различные методы вменения пропущенных значений в Python для категориальных переменных, а также примеры кода. Итак, приступим!

Методы вменения пропущенных значений в категориальных переменных:

  1. Вменение режима:
    Метод вменения режима заменяет отсутствующие значения наиболее часто встречающейся категорией в переменной. Этот метод подходит для переменных с доминирующей категорией или когда предполагается, что отсутствующие значения аналогичны наиболее часто встречающейся категории.
import pandas as pd
# Replace missing values with mode
df['categorical_var'].fillna(df['categorical_var'].mode()[0], inplace=True)
  1. Случайная выборка.
    В этом подходе пропущенные значения вводятся путем случайного выбора категорий из существующих непропущенных значений в переменной. Этот метод сохраняет распределение существующих данных.
import pandas as pd
import numpy as np
# Get non-missing values
non_missing_values = df['categorical_var'].dropna().values
# Impute missing values by random sampling
df['categorical_var'].fillna(np.random.choice(non_missing_values), inplace=True)
  1. Создание новой категории.
    Иногда может оказаться целесообразным создать новую категорию для представления отсутствующих значений. Этот подход полезен, когда отсутствие само по себе значимо и отличается от других категорий.
import pandas as pd
# Replace missing values with a new category
df['categorical_var'].fillna('Missing', inplace=True)
  1. Прогнозирующие модели.
    Другой подход заключается в использовании прогнозирующих моделей для вменения пропущенных значений в категориальных переменных. Вы можете обучить модель, используя другие переменные в качестве предикторов, и использовать ее для прогнозирования недостающих значений.
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
# Split the data into two sets: one with missing values and one without
df_missing = df[df['categorical_var'].isnull()]
df_non_missing = df[df['categorical_var'].notnull()]
# Train a random forest classifier
rf = RandomForestClassifier()
rf.fit(df_non_missing[['feature1', 'feature2']], df_non_missing['categorical_var'])
# Predict missing values
df_missing['categorical_var'] = rf.predict(df_missing[['feature1', 'feature2']])
# Combine the imputed data with the original data
df_imputed = pd.concat([df_non_missing, df_missing])

В этой статье мы рассмотрели несколько методов вменения пропущенных значений в категориальных переменных с помощью Python. Эти методы включают вменение мод, случайную выборку, создание новой категории и использование моделей прогнозирования. Выбор метода зависит от характера данных и конкретных требований анализа. Не забывайте всегда оценивать влияние вменения на ваши данные и учитывать потенциальные ошибки, вносимые выбранным методом.