Заполните пропуски в датасете:

  1. Инициализируйте SimpleImputer, чтобы инструмент менял NaN на моду.
  2. Посчитайте моду на тренировочных данных с помощью SimpleImputer.
  3. Заполните пропуски в тестовых данных.
# импортируем библиотеки и объявляем константы
import pandas as pd
import numpy as np
from sklearn.preprocessing import OrdinalEncoder
from sklearn.impute import SimpleImputer

RANDOM_STATE = 42

# подготавливаем данные заранее созданной функцией 
# в код добавили игнорирование неизвестных категорий при кодировании OHE
X_train, X_test, y_train, y_test = prepare_data('railway_full.csv')

# создаём список со строковыми категориями для кодирования OrdinalEncoder
cols_ordinal = [
    'Оценка комфортности покупки билета онлайн', 'Оценка качества wifi'
]

# создаём экземпляр класса OrdinalEncoder для кодирования
# кодируем неизвестные категории пропусками
ordinal_encoder = OrdinalEncoder(
    handle_unknown='use_encoded_value',
    unknown_value=np.nan
)

# обучаем OrdinalEncoder на выбранных признаках из тренировочной выборки
# преобразовываем тренировочную выборку
X_train[cols_ordinal] = ordinal_encoder.fit_transform(X_train[cols_ordinal])

# преобразовываем тестовую выборку
X_test[cols_ordinal] = ordinal_encoder.transform(X_test[cols_ordinal])

# создайте экземпляр класса для заполнения пропусков на моду
imputer = SimpleImputer(
    missing_values=np.nan,
    strategy='most_frequent'
)

# посчитайте моду на тренировочной выборке
imputer.fit(X_train)

# заполните пропуск в тестовых данных на моду
X_test[imputer.feature_names_in_] = imputer.transform(X_test)

# выводим пропуски в данных
print(X_test.isna().sum())

Результат
Возраст                                             0
Расстояние                                          0
Покупка билета онлайн                               0
Питание включено                                    0
Наличие wifi                                        0
Оценка комфортности места                           0
Оценка качества уборки                              0
Оценка качества обслуживания в пути                 0
Оценка комфортности покупки билета онлайн           0
Оценка качества wifi                                0
Оценка комфортности времени отправления/прибытия    0
Общая оценка качества предоставленной услуги        0
Пол_муж                                             0
Путешествует с детьми_нет                           0
Путешествует по работе_нет                          0
Тип_плацкарт                                        0
Тип_св                                              0
Оценка качества питания_отсутствует                 0
Оценка качества питания_плохо                       0
Оценка качества питания_хорошо                      0
dtype: int64