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

Applying One hot encoding on a particular column of a dataset but result was not as expected

我有一个包含五列的数据集。

数据集:

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

有近 1000 个这样的数据,其中 Employed 是分类列。我想使用 one hot encoding.

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 列上应用了一种热编码。

谁能告诉我为什么我得到了相同的结果而不是想要的结果?

你可以这样做:

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

您没有保存输出。

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

data['employed'] = out

将数据集放在一起可能需要一些争论。我发现过去需要 pd.concat(numerical_in, categorical_encoded_in, axis=1),但您可能会在保存密集输出后发现它有效。