作者:George Seif
编译:ronghuaiyang
导读
数据清洗是大数据处理的第一步,很多同学对这一步感到没有头绪,不知道哪些该清洗掉,哪些不该,看看这篇文章,是不是能有点启发?
像奥巴马丢掉麦克风一样丢掉坏数据
清理数据应该是数据科学(DS)或机器学习(ML)工作流的第一步。如果没有清晰的数据,你将很难看到探索中真正重要的部分。一旦你最终开始训练ML模型,那么训练它们就会变得不必要地更具挑战性。主要的一点是,如果你希望最大限度地利用数据,那么它应该是干净的。
在数据科学和机器学习的上下文中,数据清理意味着过滤和修改数据,使其更易于探索、理解和建模。过滤掉你不想要或不需要的部分,这样你就不需要查看或处理它们。修改你确实需要的部分,但它们的格式不是您需要的,以便您可以正确地使用它们。
在这里,我们将了解一些我们通常希望在数据中清理的东西,以及你可以使用的panda代码!
数据缺失
大型数据集很少是完全完整的。这里的完整指的是所有数据点的所有特征变量都有值。通常会丢失一些值,当在panda中加载类似“pd.read_csv()”的值时,这些值被标记为NaN或None。有许多非常实际的原因可以解释为什么这些数据会丢失。收集数据的人可能只是忘记了,或者他们直到数据收集过程的一半才开始收集该特性变量。
在使用数据集之前,需要处理丢失的数据。例如,假设你正在做数据探索,发现关于数据的一些关键信息来自某个特性变量,例如“变量F”。但之后你会发现数据集中95%的变量F值都是NaNs,你不可能从一个仅恰当地表示数据的5%的变量中对数据集作出任何具体的结论!当你开始训练你的ML模型时,你的程序也可能将NaNs视为0或无穷大,从而导致了你的训练出现问题!
在pandas中有一些方法可以处理丢失的数据:
检查NANs: pd.isnull(object) 检测数据中缺失的值,它同时检测“NaN”和“None”
删除丢失的数据: df.dropna(axis=0,how=’any’)返回数据帧,其中删除了包含NaNs的任何数据点。
替换缺少的数据: df.replace(to_replace=None,value=None)如果你知道希望这个特性变量是什么值,那么这是非常有用的。
删除一个特征: df.drop(‘feature_variable_name’,axis=1)如果你发现某个特性变量在数据集中有>90%的NaN,那么从你的数据中删除整个特征是有意义的。