【问题标题】:Applying OneHotEncoding on categorical data with missing values对具有缺失值的分类数据应用 OneHotEncoding
【发布时间】:2020-11-25 08:52:25
【问题描述】:
我想对缺失值的 pd.DataFrame 进行 OneHotEncode。当我尝试 OneHotEncode 时,它会引发有关缺失值的错误。
ValueError: 输入包含 NaN
当我尝试使用 SimpleImputer 修复缺失值时,它会引发有关分类数据的错误
ValueError:不能对非数字数据使用均值策略:
无法将字符串转换为浮点数:'RH'
由于缺少值,我无法应用 OneHotEncoding,而由于分类数据,我无法应用 SimpleImputer。
除了删除列或行之外,还有其他方法吗?
【问题讨论】:
标签:
python-3.x
pandas
categorical-data
one-hot-encoding
imputation
【解决方案1】:
您可以使用以下 2 种方法中的任何一种来消除 NaN 分类值 -
选项 1: 将缺失值替换为最常见的类别。例如,如果您有一列 51% 的值属于一个类别,则使用以下代码填充该类别的缺失值
df['col_name'].fillna('most_frequent_category',inplace=True)
选项 2:如果您不希望将缺失值归入最常见的类别,那么您可以创建一个名为“其他”的新类别(或与您的变量相关的类似中性类别)
df['col_name'].fillna('Other',inplace=True)
这两种方法都会估算您缺失的分类值,然后您就可以对它们进行 OneHotEncode。