我有一个包含缺失值的csv文件。如何处理缺失?有一点是我可以用非常大的负值替换这个值,如-99999.这是一个很好的技术吗?这是csv文件:
length,weight,height,price
2,9,,8
7,,2,7
1,,,2
,,2,3
注意:真正的csv文件非常大,包含许多列和行。
答案 0 :(得分:0)
缺失值的处理是机器学习和数据分析的一个完整主题。
如果您只是尝试为缺失变量设置特定值,则最好使用变量无法使用的值替换。如何保证变量不能取-99999值,如果想在缺失值插补后找到该变量的最小值,将会发生什么。
Personaly,我会让错过的值显示在你的例子中,没有任何内容。我真的想要一个价值,我认为最好把" NULL"," MISSING"或者任何字符串,如果你的变量是数字的话。
然后,要进行估算,您可以执行以下操作,具体取决于缺失值模式(缺失值的数量和分布,缺失值与变量的相关性,......):
答案 1 :(得分:-2)
这种称为转换的数据工程技术(以及数据清理的一部分),您必须使用一些库来转换数据和处理错过的数据。我强烈建议
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()