Python:pd.get_dummies()

时间:2018-07-03 05:41:15

标签: python pandas

我有一个熊猫数据框df。它由数值和类别变量组成,其中包含NaN / NULL值。要进行数据预处理,我必须对分类变量进行一次热编码,然后使用pd.get_dummies()进行编码。

但是,在使用.get_dummies之后,原始的df中的NULL将不再存在于经过一键编码的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 :(得分:0)

当您具有其中包含Nulls / NaN的分类值时,Nulls将被忽略-即。您会在新创建的列中获得0,如果您将dummy_na = True参数传递给get_dummies调用,您仍然不会有null,但是您会获得包含1的新列以获取null值,例如

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),非分类不受影响

答案 1 :(得分:0)

您的伪变量中NaN变为0。如果要保持为空,请尝试以下操作:

df = pd.get_dummies(df, dummy_na=True)