【问题标题】:How to one hot encode a large dataframe when multiple columns contain the same values?当多列包含相同的值时,如何对大数据帧进行一次热编码?
【发布时间】:2018-03-21 04:45:50
【问题描述】:

标题基本上抓住了我的问题。

我有一个数据框,并且多个列具有 [0,1] 等值,如果我要对 df 进行热编码,我将有多个具有相同名称的列。

繁琐的解决方案是手动创建唯一列,但我有 58 个分类列,因此看起来效率不高。

我不确定这是否会有所帮助,但这是我的数据框的 head()

x2  x3  x4  x5  x6  x7  x8  x9  x10 x11 ... z217    z218    z219    z220    z221    z222    subject phase   state   output
0   0   0   1   -300.361218 0.886360    -2.590886   225.001899  0.006204    0.000037    -0.000013   ... 0.005242    0.024971    -1017.620978    -382.850838 -48.275711  -2.040336   A   3   B   0
1   0   0   1   -297.126090 0.622211    -3.960940   220.179017  0.006167    -0.000014   -0.000003   ... 0.001722    0.023595    91.229094   24.802230   1.783950    0.022620    A   3   C   0
2   0   0   1   -236.460253 0.423640    -12.656341  139.453445  0.006276    -0.000028   0.000022    ... -0.010894   -0.036318   -188.232347 -17.474861  -1.005571   -0.021628   A   3   B   0
3   0   0   1   33.411458   2.854415    -1.962432   3.208911    0.009752    -0.000273   -0.000024   ... -0.034184   -0.047734   185.122907  -549.282067 542.193381  -178.049926 A   3   A   0
4   0   0   1   -118.125214 2.009809    -3.291637   34.874176   0.007598    0.000001    -0.000022   ... 0.001963    0.004084    35.207794   -78.143166  57.084208   -13.700212  A   4   C   0

【问题讨论】:

  • Minimal, complete, verifiable example 适用于此。请提供问题输入的示例(此处的所有列都没有值 0、1、2)以及您希望看到的结果 DF。去掉无关的信息(或者只保留几列)。
  • 我会记住的,谢谢

标签: python pandas one-hot-encoding


【解决方案1】:

您可能已经在使用pandas.get_dummies?如果不是,则此函数将分类列转换为多个指标列(一种热编码)。

此函数有一个“前缀”参数,专门针对您的情况而存在。这可以是字符串列表(长度必须等于数据框中的列数)。不过,在您的情况下,您可以将其设为字典,在其中将列名映射到前缀。所以,类似:

pd.get_dummies(df, prefix={'x3': 'x3', 'x4': 'x4'})

这将增加像x3_0, x3_1 ... x4_0, x4_1 ...这样的列

【讨论】:

  • @madsthaks 如果您能接受我的回答将不胜感激
【解决方案2】:

您可以读取数据并首先获取分类变量的所有唯一值的列表。然后,您可以在唯一值列表中安装一个热编码器对象(如 sklearn.preprocessing.CategoricalEncoder)。

此方法还可以在训练测试框架中或在您分块读取数据时提供帮助。 我创建了一个 python 模块,它可以自己完成所有这些工作。你可以在这个 GitHub 存储库中找到它 - dummyPy

一个简短的教程 - How to One Hot Encode Categorical Variables in Python?

【讨论】:

    猜你喜欢
    • 2017-05-02
    • 1970-01-01
    • 2020-10-06
    • 2023-03-05
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多