Короткий ответ
Выбор между глобальным средним/медианой, групповым средним (например, по сегменту) и модельной импутацией зависит от того, насколько пропуск связан с другими признаками: более сложные методы точнее, но требуют больше данных и прозрачности для интерпретации.
Как это работает подробнее
глобальное среднее/медиана заполняет все пропуски одним и тем же значением, игнорируя контекст; групповое среднее (df.groupby('segment')['x'].transform('mean')) учитывает, что разные сегменты могут иметь разный типичный уровень метрики; модельная импутация (например, регрессия по другим признакам) пытается предсказать пропущенное значение на основе взаимосвязей в данных.
Пример кода
question-128.py
import pandas as pd
df = pd.DataFrame({'segment': ['A', 'A', 'B', 'B'], 'value': [10, None, 100, 120]})
df['value_imputed'] = df.groupby('segment')['value'].transform(lambda x: x.fillna(x.mean()))
print(df)Что использовать на практике
- Практика. групповое среднее — хороший баланс между простотой и точностью, когда есть явный сегмент, объясняющий часть вариации; модельная импутация оправдана при значимой доле пропусков и достаточном объёме данных для обучения, но добавляет сложность и риск переобучения или скрытой утечки целевой переменной.
- Проверка. пропуск в сегменте A должен быть заполнен значением 10 (единственное известное значение в группе), а не глобальным средним по всей таблице (которое было бы искажено сегментом B).
Подводные камни
- Частая ошибка. применяют групповое среднее по сегменту с очень малым числом наблюдений, получая нестабильные (переобученные на пару точек) оценки; используют модельную импутацию, обученную на тех же данных, которые затем используются для оценки итоговой метрики, не разделяя обучение и применение, что переоценивает точность импутации.