开始使用免费开始使用

对 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)
编辑并运行代码