LabelEncoder().fit_transform 与 pd.get_dummies 用于分类编码

LabelEncoder().fit_transform vs. pd.get_dummies for categorical coding

最近我注意到,如果你有这样的数据框 df

   A      B   C
0  0   Boat  45
1  1    NaN  12
2  2    Cat   6
3  3  Moose  21
4  4   Boat  43

您可以使用 pd.get_dummies:

自动编码分类数据
df1 = pd.get_dummies(df)

产生这个:

   A   C  B_Boat  B_Cat  B_Moose
0  0  45     1.0    0.0      0.0
1  1  12     0.0    0.0      0.0
2  2   6     0.0    1.0      0.0
3  3  21     0.0    0.0      1.0
4  4  43     1.0    0.0      0.0

我通常使用 LabelEncoder().fit_transform 来执行此类任务,然后再将其放入 pd.get_dummies,但如果我可以跳过一些步骤,那将是可取的。

我是否仅仅通过在我的整个数据帧上使用 pd.get_dummies 对其进行编码而丢失任何东西?

是的,如果您只想对字符串特征进行编码,则可以跳过 LabelEncoder 的使用。另一方面,如果您有一个整数分类列(而不是字符串),那么 pd.get_dummies 将保持原样(例如,请参阅您的 A 或 C 列)。在这种情况下,您应该使用 OneHotEncoder. Ideally OneHotEncoder would support both integer and strings but this is being worked on at the moment.