Должен ли я использовать параметр "drop_first" pd.get_dummies (), когда NaN существует? - PullRequest
0 голосов
/ 26 октября 2018

Я довольно новичок в 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?

Спасибо,

Ханнес

1 Ответ

0 голосов
/ 26 октября 2018

То, что вы написали, правильно.Отбрасывание первого сырья будет иметь это влияние.Таким образом, есть некоторые решения, связанные с обработкой пропущенных значений:

  1. , как предлагает @onno, вы можете отбросить строки NaN;
  2. Вы придерживаетесь первого подхода и [0,0,0] означает неизвестный / NaN;
  3. Вы пытаетесь оценить значения NaN на основе других столбцов;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...