【问题标题】:Use a dataset to replace value in another dataset using Python or pandas使用 Python 或 pandas 使用数据集替换另一个数据集中的值
【发布时间】:2020-02-22 08:41:27
【问题描述】:

我有一个庞大的数据集“A”用于汽车价格预测,其中包含某些列。其中一列是“城市”,我想给每个城市排名以将其用于 ML 算法。城市超过 50 个,因此在运行时替换并不会使代码看起来很好。

我想制作一个包含“城市”和“排名”的 .csv,并在数据集“A”中替换和使用该“排名”。我怎样才能在 python 或 pandas 中做到这一点?任何示例或代码 sn-p 都会有很大帮助。

【问题讨论】:

    标签: python pandas replace dataset data-analysis


    【解决方案1】:

    您可以使用 scikit 的 labelEncoder,它将每个唯一名称转换为一个代码。 危险:请注意,代码是随机给出的,并且是名义上的(不是序数),这意味着城市的相对数字没有任何意义。 在下面的例子中,东京是 2,巴黎是 1。那是因为东京人口多吗?还是什么有意义的?不。它是随机的,因此,大多数时候它不适合作为 ML 特征。 标签编码器的文档是here

    您还可以查看将每个值转换为 1 和 0 列的 one-hot 编码器。这通常是您将分类合并到 ML 中的方式。

    如需了解更多信息,请在 Google 上搜索“名义与有序分类特征”或“如何将分类特征合并到 scikit ml”等...

    >>> le = preprocessing.LabelEncoder()
    >>> le.fit(["paris", "paris", "tokyo", "amsterdam"])
    LabelEncoder()
    >>> list(le.classes_)
    ['amsterdam', 'paris', 'tokyo']
    >>> le.transform(["tokyo", "tokyo", "paris"]) 
    array([2, 2, 1]...)
    >>> list(le.inverse_transform([2, 2, 1]))
    ['tokyo', 'tokyo', 'paris']
    

    【讨论】:

    • 哇,这是很棒的信息,因为我刚刚开始这样做。但正如我所说,我的数据集非常非常大,大约 67k 行。我无法在代码中写下所有名称,我想从我的数据集中调用该行并进行标签编码,这可能吗?
    • 这只是文档中的示例,您需要将 fit 语句更改为:le.fit(A['city'])。然后,A['codes']= le.transformA['city'])。这为您提供了名为代码的新列
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 2017-12-03
    • 2018-02-26
    • 2022-06-15
    • 2016-11-17
    • 1970-01-01
    相关资源
    最近更新 更多