所以我对这一切都很陌生。我想知道在熊猫中我可以将我的列值转换为数字吗?我会试着举一个例子来解释我的意思
例如,假设我有一个名为“动物”的列,在此列中我有六种不同的动物,但我想将它们转换为数值,因此每个动物都像 1、2、3、4、5、6 一样简单不同的动物。我该怎么做?
所以我对这一切都很陌生。我想知道在熊猫中我可以将我的列值转换为数字吗?我会试着举一个例子来解释我的意思
例如,假设我有一个名为“动物”的列,在此列中我有六种不同的动物,但我想将它们转换为数值,因此每个动物都像 1、2、3、4、5、6 一样简单不同的动物。我该怎么做?
好吧,我喜欢处理这个问题的一种方法(这是一个常见问题,至少在日常工作生活中)是用二进制值转换列中的每种可能性。让我详细说明一下。假设您的列动物有 3 种可能性:狗、猫和马。您将列分解为 3 个不同的列:colDog、colCat 和 colHorse 。并且您根据列animals的值填充新列。例如:如果第一行有狗,则将 1 放在 colDog 列中,等等。
使用数值而不是二进制处理分类数据的问题在于您在值之间创建了层次顺序。如果狗是1,猫是2,马是3,那么马比猫和狗的影响更大。或者我认为你只是想代表你的类别。
当然它称为标签编码,来自该页面的示例:
le = preprocessing.LabelEncoder()
le.fit(["paris", "paris", "tokyo", "amsterdam"])
LabelEncoder()
list(le.classes_)
['amsterdam', 'paris', 'tokyo']
le.transform(["tokyo", "tokyo", "paris"])
array([2, 2, 1]...)
list(le.inverse_transform([2, 2, 1]))
['tokyo', 'tokyo', 'paris']
确保您不对此类编码标签添加、减去或执行任何类型的数学运算。因为,从统计学上讲,这些被称为名义值,而持有这些值的变量被称为名义变量。为什么是名义上的?因为这样的变量对其成分或值没有任何特定的顺序。相比之下,分类值具有顺序的有序变量。