Python: нули отбрасываются pd.get_dummies () - PullRequest
0 голосов
/ 03 июля 2018

У меня есть датафрейм Pandas, df. Он состоит из числовых и категориальных переменных со значениями NaN / NULL. Чтобы продолжить предварительную обработку данных, мне нужно в горячем виде кодировать мои категориальные переменные, и я делаю это с помощью pd.get_dummies().

Однако после использования .get_dummies значения NULL, которые были в исходном df, больше не присутствуют в df_ohe с горячим кодированием. Мне интересно, как нули сбрасываются в моем новом фрейме данных, df_ohe. Я проверил документацию на .get_dummies, но не понимаю, почему нулевые наблюдения отбрасываются.

df_ohe = pd.get_dummies(df.drop(['classLabel'], axis=1), drop_first=True)

Подсчет нулей по переменной показывает, что в результирующей таблице нет нулей, df_ohe:

df_ohe.isnull().sum()
v2                0
v3                0
v5                0
v6                0
v7                0
v10               0
v13               0
v14               0
v15               0
v17               0
classLabel_int    0
v1_b              0
v4_u              0
v4_y              0
v8_t              0
v9_t              0
v11_t             0
v12_p             0
v12_s             0
v16_t             0

В оригинале есть нули:

df.isnull().sum()
v1                  39
v2                  39
v3                   0
v4                  64
v5                   0
v6                   0
v7                   0
v8                   0
v9                   0
v10                  0
v11                  0
v12                  0
v13                100
v14                  0
v15                100
v16               2145
v17                  0
classLabel           0
classLabel_int       0

Почему мои нули сбрасываются?

Ответы [ 2 ]

0 голосов
/ 24 июля 2019

NaN становится 0 в ваших фиктивных переменных. Если вы хотите сохранить нулевое значение, попробуйте это:

df = pd.get_dummies(df, dummy_na=True)
0 голосов
/ 03 июля 2018

Если у вас есть категориальные значения с Null / NaNs в них, нулевые значения игнорируются, т.е. вы получите 0 во вновь созданных столбцах, если вы передадите параметр dummy_na = True в вызов get_dummies, у вас все равно не будет нулевых значений, но вы получите новые столбцы с 1 для нулевых значений, например

import pandas as pd
import numpy as np
df = pd.DataFrame([[1,'a'], [2, None],[np.nan,'f']])
df

enter image description here

pd.get_dummies(df)

enter image description here

строка 1 столбца 1_a и 1_f имеет нули

pd.get_dummies(df,dummy_na=True)

enter image description here

Категориальная особенность имеет новый столбец (1_nan), и на некатегориальную категорию это не влияет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...