我有一个熊猫数据框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
为什么我的空值会被丢弃?
答案 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
pd.get_dummies(df)
第1行第1_a和1_f列为零
pd.get_dummies(df,dummy_na=True)
分类功能有一个新列(1_nan),非分类不受影响
答案 1 :(得分:0)
您的伪变量中NaN变为0。如果要保持为空,请尝试以下操作:
df = pd.get_dummies(df, dummy_na=True)