首页 > 解决方案 > 尽管没有缺失值,但无法应用 LabelEncoder

问题描述

我目前正在努力使用 python labelEncoder。
我尝试将其应用于由模式填充值和“自编”值组成的数据集,以获取某些列中大量缺失值。

我尝试对数据集进行编码,当我只使用众数、中值或均值函数时,它工作得非常好。但是,一旦一列部分包含我自己估算的值(例如 9999)以创建具有这些值的新类别,LabelEncoder 似乎不起作用..

出现以下错误:

TypeError: '<' not supported between instances of 'str' and 'float'

因为我知道当奇怪的符号或 NaN 仍在数据集中时会发生错误,所以我可以向您保证我检查了它们。这就是为什么我不知道如何继续前进..

知道这里有什么问题吗?

为了使问题更清楚,这就是我所做的:Y 和 N 代表是和否,并且曾经是该列的原始值。我总结了 U 下的所有缺失值以创建一个新类别。未知或 99999 相同

插图图像

标签: python

解决方案


正如错误消息所说,您正在尝试将浮点数(数字)和字符串(文本)与数字运算符进行比较,这没有任何意义(例如:哪个更大5fish?)。问题是,当您自己添加这些值时,您认为您添加了一个 number 9999,但实际发生的是 python 正在插入一个包含 text 的字符串'9999'

解决方案是使用该float()函数确保将手动插入的标签作为浮点数放入。您还可以在进行数字比较时使用它们以确保数据类型正确。

x = '5.5'
1 + x
TypeError: unsupported operand type(s) for +: 'int' and 'str'

1 + float(x)
6.5

推荐阅读