Я работаю с набором данных titani c и пытаюсь применить OneHotEncoding к одному из столбцов под названием «Embarked», который имеет 3 возможных значения «S», «Q» и «C». Это дает мне
ValueError: Input contains NaN
. Я проверил содержимое столбца двумя способами. Первый - for-l oop с value_counts, а второй - путем записи всей таблицы в csv:
for col in X.columns:
print(col)
print(X[col].value_counts(dropna=False))
X.isna().to_csv("xisna.csv")
print("notna================== :",X.notna().shape)
X.dropna(axis=0,how='any',inplace=True)
print("X.shape " ,X.shape)
return pd.DataFrame(X)
Что дало
Embarked
S 518
C 139
Q 55
Name: Embarked, dtype: int64
Я проверил содержимое csv и прочитав более 700 записей, я не нашел ни одного оператора True.
Конвейер, блокирующий ("cat", One ...)
cat_attribs=["Sex","Embarked"]
special_attribs = {'drop_attribs' : ["Name","Cabin","Ticket","PassengerId"], k : [3]}
full_pipeline = ColumnTransformer([
("fill",fill_pipeline,list(strat_train_set)),
("emb_cat",OneHotEncoder(),['Sex']),
("cat",OneHotEncoder(),['Embarked']),
])
Так где именно значение NaN, которое мне не хватает?