对 DataFrame 进行序数编码
可以使用两种技术对分类特征进行编码,即 one-hot 编码和序数编码。在 one-hot 编码中,每个类别都会成为一列,对于每一行,其所属类别对应的列为 1,其余为 0。在序数编码中,类别会被映射为从 0 到类别数减 1 的整数值。
在本练习中,您将遍历 users DataFrame 中的所有列,对其中的类别进行序数编码。您还将为每一列在字典 ordinal_enc_dict 中存储一个编码器,以便之后可以把编码后的列转换回原始类别。
本练习是课程的一部分
在 Python 中处理缺失数据
练习说明
- 定义一个空字典
ordinal_enc_dict。 - 为每一列创建一个序数编码器对象。
- 选取 users 中该列的非空值并对其进行编码。
- 将编码后的值赋回 users 中每个列(
col_name)的非空位置。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Create an empty dictionary ordinal_enc_dict
ordinal_enc_dict = ___
for col_name in users:
# Create Ordinal encoder for col
ordinal_enc_dict[col_name] = ___
col = users[col_name]
# Select non-null values of col
col_not_null = ___
reshaped_vals = col_not_null.values.reshape(-1, 1)
encoded_vals = ordinal_enc_dict[col_name].fit_transform(reshaped_vals)
# Select the non-null values for the column col_name in users and store the encoded values
users.loc[___, ___] = np.squeeze(encoded_vals)