将 OneHotEncoding 应用于具有缺失值的分类数据

Applying OneHotEncoding on categorical data with missing values

我想 OneHotEncode pd.DataFrame 缺少 values.When 我尝试 OneHotEncode,它会抛出有关缺失值的错误。

ValueError: Input contains NaN

当我尝试使用 SimpleImputer 修复缺失值时,它会抛出有关分类数据的错误

ValueError: Cannot use mean strategy with non-numeric data: could not convert string to float: 'RH'

由于缺少值,我无法应用 OneHotEncoding,由于分类数据,我无法应用 SimpleImputer。 除了删除列或行之外,还有其他解决方法吗?

您可以使用以下两种方法之一来消除 NaN 分类值 -

选项 1: 用出现频率最高的类别替换缺失值。例如,如果您有一列 51% 的值属于一个类别,则使用以下代码填充该类别的缺失值

df['col_name'].fillna('most_frequent_category',inplace=True)

选项 2: 如果您不想将缺失值归因于最常见的类别,那么您可以创建一个名为 'Other'(或类似的中性类别)的新类别与您的变量相关的类别)

df['col_name'].fillna('Other',inplace=True)

这两种方法都会估算您缺失的分类值,然后您将能够对它们进行 OneHotEncode。