用于机器学习的csv文件数据集中的缺失值

时间:2018-01-24 08:35:00

标签: csv machine-learning

我有一个包含缺失值的csv文件。如何处理缺失?有一点是我可以用非常大的负值替换这个值,如-99999.这是一个很好的技术吗?这是csv文件:

length,weight,height,price
2,9,,8
7,,2,7
1,,,2
,,2,3

注意:真正的csv文件非常大,包含许多列和行。

2 个答案:

答案 0 :(得分:0)

缺失值的处理是机器学习和数据分析的一个完整主题。

如果您只是尝试为缺失变量设置特定值,则最好使用变量无法使用的值替换。如何保证变量不能取-99999值,如果想在缺失值插补后找到该变量的最小值,将会发生什么。

Personaly,我会让错过的值显示在你的例子中,没有任何内容。我真的想要一个价值,我认为最好把" NULL"," MISSING"或者任何字符串,如果你的变量是数字的话。

然后,要进行估算,您可以执行以下操作,具体取决于缺失值模式(缺失值的数量和分布,缺失值与变量的相关性,......):

  • 删除所有缺少值的行。
  • 使用行平均值或行中位数(对于连续变量)(不推荐)来计算缺失值
  • 使用高级技术(例如链式方程或MICE的多重插补)来估算缺失值
  • 将缺失值视为特定类别(对于分类变量)

答案 1 :(得分:-2)

这种称为转换的数据工程技术(以及数据清理的一部分),您必须使用一些库来转换数据和处理错过的数据。我强烈建议

Optimus

  

Optimus是缺少清洁的框架(清洁和很多   更多),分布式预处理和探索性数据分析   使用Apache Spark时尚

     

Optimus是以分布式方式清理和预处理数据的缺失框架。它使用Apache Spark的所有功能   (通过Catalyst优化)这样做。它实现了几个方便的工具   数据争吵和改变将使您的生活更轻松。   与任何其他公共数据清理相比,第一个明显优势   库或框架是它可以在您的笔记本电脑或您的笔记本电脑上工作   群集,其次,它非常容易安装,使用和   理解。

有很多例子可以简单地将它们扩展到你的工作中。

例如,您可以轻松找到NaN字段并将其替换为-99999

    # Import optimus
    import optimus as op
    # Instance of Utilities class
    tools = op.Utilities()
    # Reading df from web
    path = "yourcsv.csv"
    df = tools.read_url(path=path)
  # Instantiation of DataTransformer class:
    transformer = op.DataFrameTransformer(df)
    # Replace NA with -99999's
    transformer.replace_na(-99999, columns="*")
    # Show DF
    transformer.show()