如何将标签值存储在pd.factorize中,然后执行OneHotEncoding过程?

时间:2018-12-12 10:46:00

标签: python pandas encoding refactoring one-hot-encoding

我正在尝试对大型数据集执行编码。

这是到目前为止的过程。

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)
  1. 商店标签

    feature_labels = pd.Series(X.columns.values) enc_labels = pd.Series(label_data.columns.values)

  2. 整理具有两个以上类别的列

    enocoded_cols = pd.DataFrame() for col in label_counts[label_counts > 2].index: enco = pd.factorize(label_data[col]) enocoded_cols[col] = enco[0]

  3. OneHotEncoding

    ohEncoder = OneHotEncoder() ohEncoder.fit(enocoded_cols) enocoded_cols = ohEncoder.transform(enocoded_cols).toarray()

  4. 将编码的列附加回数字df

    X = X.join(pd.DataFrame(enocoded_cols, index=X.index))

在该过程中,将创建73个新列,并将它们命名为0-72。 我尝试了其他方法来保留标签名称,但是在整个编码过程中都无法使用。

赞赏所有技巧,以一种简单的方式实现这一目标。

谢谢!

0 个答案:

没有答案