将 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。
我想 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。