Это зависит от задачи и от применяемого метода.
Наиболее распространенные методы "табличного" ML -- Catboost и XGBoost -- умеют работать с пропущенными данными "из коробки", см. https://catboost.ai/docs/concepts/algorithm-missing-values-processing.html и https://towardsdatascience.com/xgboost-is-not-black-magic-56ca013144b4
"Под капотом" у них, естественно, не чёрная магия. XGBoost в каждом дереве выбирает, как эффективней интерпретировать пропущенное число, а Catboost просто интерпретирует пропущенные значения как минимум или максимум в столбце в зависимости от настроек. Метод XGBoost выглядит намного круче, но на практике различия достаточно философские, достаточно часто "просто возьми минимум" работает лучше.
Как ни странно, ни одна из этих систем "из коробки" не предлагает заменять пропущенные значения на среднее или медиану столбца. Поскольку они разрабатывались с учетом огромного количества реальных датасетов из реальных задач, по-видимому, в этом есть свой смысл, такие стратегии реже приводят к хорошим результатам, чем "минимум-максимум".
В любом случае выбранное вами решение -- выкидывать записи с пропущенными фичами из датасета, заменять на минимум/максимум/среднее/ещё что-то, или же поступать более хитро -- хорошо бы перепроверить с помощью кросс-валидации.