• 使用 Python 进行数据清洗的完整指南


    你一定听说过这句著名的数据科学名言:

    在数据科学项目中, 80% 的时间是在做数据处理。

    如果你没有听过,那么请记住:数据清洗是数据科学工作流程的基础。机器学习模型会根据你提供的数据执行,混乱的数据会导致性能下降甚至错误的结果,而干净的数据是良好模型性能的先决条件。当然干净的数据并不意味着一直都有好的性能,模型的正确选择(剩余 20%)也很重要,但是没有干净的数据,即使是再强大的模型也无法达到预期的水平。

    在本文中将列出数据清洗中需要解决的问题并展示可能的解决方案,通过本文可以了解如何逐步进行数据清洗。

    缺失值

    当数据集中包含缺失数据时,在填充之前可以先进行一些数据的分析。因为空单元格本身的位置可以告诉我们一些有用的信息。例如:

    • NA值仅在数据集的尾部或中间出现。这意味着在数据收集过程中可能存在技术问题。可能需要分析该特定样本序列的数据收集过程,并尝试找出问题的根源。
    • 如果列NA数量超过 70–80%,可以删除该列。
    • 如果 NA 值在表单中作为可选问题的列中,则该列可以被额外的编码为用户回答(1)或未回答(0)。
    1. missingno

    这个python库就可以用于检查上述情况,并且使用起来非常的简单,例如下图中的白线是 NA:

    1. import missingno as msno
    2. msno.matrix(df)

    对于缺失值的填补计算有很多方法,例如:

    • 平均,中位数,众数
    • kNN
    • 零或常数等

    不同的方法相互之间有优势和不足,并且没有适用于所有情况的“最佳”技术。具体可以参考我们以前发布的文章

    异常值

    异常值是相对于数据集的其他点而言非常大或非常小的值。它们的存在极大地影响了数学模型的性能。让我们看一下这个简单的示例:

    在左图中没有异常值,我们的线性模型非常适合数据点。在右图中有一个异常值,当模型试图覆盖数据集的所有点时,这个异常值的存在会改变模型的拟合方式,并且使我们的模型不适合至少一半的点。

    对于异常值来说我们有必要介绍一下如何确定异常,这就要从数学角度明确什么是极大或极小。

    大于Q3+1.5 x IQR或小于Q1-1.5 x IQR都可以作为异常值。IQR(四分位距) 是 Q3 和 Q1 之间的差 (IQR = Q3-Q1)。

    可以使用下面函数来检查数据集中异常值的数量:

    完整文章:

    https://www.overfit.cn/post/7728efa2841148bdbb184a6cdd7aaca3

  • 相关阅读:
    ubuntu下java环境变量配置
    批处理 控制 服务
    javascript break up a code line within a text string with a backslash.
    javascript for...in statement
    javascript output str to browser
    javascript RegExp
    javascript try catch throw
    javascript prototype
    javascript box
    java 移位处理
  • 原文地址:https://www.cnblogs.com/deephub/p/16066115.html
Copyright © 2020-2023  润新知