Я довольно новичок в Python и ML, поэтому мой вопрос может быть простым!Я хотел бы знать, должен ли я использовать «drop_first» -параметр функции pandas.get_dummies, когда у меня есть NaN в столбце.
Пожалуйста, см. Ниже:
df = pd.DataFrame(data=[[1, 'Test', 3],
[0, None, 1],
[2, 'Bla', 4],
[9, 'Foo', 2]],
index=[0, 1, 2, 3],
columns=['Col1', 'Col2', 'Col3'])
print(df.head())
Этоприведет к такому выводу:
Col1 Col2 Col3
0 1 Test 3
1 0 NaN 1
2 2 Bla 4
3 9 Foo 2
Хорошо, все в порядке.Теперь get_dummies от панд (импортированных как pd):
new_df = pd.get_dummies(df['Col2'])
print(new_df)
И результат:
Bla Foo Test
0 0 0 1
1 0 0 0
2 1 0 0
3 0 1 0
Хорошо!Мой NaN переведен на [0, 0, 0]
.Я думаю, что это нормально для дальнейших алгоритмов.
Вот то, что мне интересно.При выполнении следующего:
new_df = pd.get_dummies(df['Col2'], drop_first=True)
print(new_df)
Результат:
Foo Test
0 0 1
1 0 0
2 0 0
3 1 0
Первый столбец удален, это нормально.Но теперь у меня есть две строки с [0, 0]
, и невозможно отследить значение до исходного значения.Оба ряда будут переведены в категорию "Бла" сейчас.Правильно?
Я спрашиваю себя, должен ли я использовать параметр "drop_first", когда в столбце есть NaN?
Спасибо,
Ханнес