我正在尝试对大型数据集执行编码。
这是到目前为止的过程。
1。分开的数字变量和分类变量。
X = df.select_dtypes(include=['int64', 'float64'])
label_data = df.select_dtypes(include=['object', 'category'])
label_counts = label_data.T.apply(lambda x: x.nunique(), axis=1)
商店标签
feature_labels = pd.Series(X.columns.values)
enc_labels = pd.Series(label_data.columns.values)
整理具有两个以上类别的列
enocoded_cols = pd.DataFrame()
for col in label_counts[label_counts > 2].index:
enco = pd.factorize(label_data[col])
enocoded_cols[col] = enco[0]
OneHotEncoding
ohEncoder = OneHotEncoder()
ohEncoder.fit(enocoded_cols)
enocoded_cols = ohEncoder.transform(enocoded_cols).toarray()
将编码的列附加回数字df
X = X.join(pd.DataFrame(enocoded_cols, index=X.index))
在该过程中,将创建73个新列,并将它们命名为0-72。 我尝试了其他方法来保留标签名称,但是在整个编码过程中都无法使用。
赞赏所有技巧,以一种简单的方式实现这一目标。
谢谢!