在数据集的特定列上应用一个热编码,但结果不符合预期

2024-10-06 12:30:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个五列的数据集

数据集:

Country       Population    Tourism    Mean_Age    Employed
Afghanistan  37172386       14000      17.3        Fulltime
Albania      2866376        5340000    36.2        Parttime

几乎有1000个这样的数据,其中Employed是一个分类列。我想使用一个热编码将Employed列表示为一个数字列

我的代码是

from sklearn.preprocessing import OneHotEncoder
Employed_Status = data["Employed"]
encoder = OneHotEncoder()
encoder.fit(Employed_Status.values.reshape(-1, 1))
encoder.transform(Employed_Status.head().values.reshape(-1, 1)).todense()

这里data是我的数据帧的名称

当我在执行上述行之后尝试查看数据集时,我得到了上一个数据集

然而,我想我会得到这样的东西

Country       Population    Tourism    Mean_Age    Employed
Afghanistan  37172386       14000      17.3        1
Albania      2866376        5340000    36.2        0

因为我已经在Employed列上应用了一个热编码

有谁能告诉我为什么我得到了同样的结果而不是期望的结果


Tags: 数据编码encoderagedatastatusmeancountry
2条回答

您没有保存输出

out = encoder.transform(...).todense()

data['employed'] = out

可能需要一些争论才能使数据集走到一起。我发现pd.concat(numerical_in, categorical_encoded_in, axis=1)在过去是必需的,但是您可能会发现,一旦保存了密集输出,它就可以工作了

您可以这样做:

data['Employed'] = data['Employed'].replace('Fulltime',1).replace('Parttime',0)

相关问题 更多 >