from sklearn.impute import KNNImputer imputer=KNNImputer(n_neighbors=5, weights='uniform') imputer.fit(df) imputer.transform(df) Простой код, но к сожалению его нельзя применить на неподготовленном датасете. Метод не работает со строковыми значениями. А еще он основан на "расстоянии" между ближайшими соседями. Значит данные нужно нормализовать перед использованием. Простой способ избавиться от текстовых категорий - "One Hot Encoding" cat_variables = df[['Geography', 'Gender']] cat_dummies = pd.get_dummies(cat_variables, drop_first=True) Чтобы сохранить оригинальный датасет, лучше использовать копию для дальнейших манипуляций. df_knn = df.drop(['Geography', 'Gender'], axis=1) df_knn = pd.concat([df_knn, cat_dummies], axis=1) Для нормализации можно использовать StandardScaler или MinMaxScaler. from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() df_knn = pd.DataFrame(scaler.fit_transform(df_knn), columns = df_knn.columns) Ну вот теперь то уже можно использовать метод за