全文链接:http://tecdat.cn/?p=8287
在每个事实世界的数据集中,缺失数据值简直是不可避免的,在典型的数据收集过程中简直不可能防止。
这可能因为各种起因而产生,例如 文件失落 / 损坏 、 数据输出过程中的谬误 、 数据收集 过程中的技术问题以及许多其余起因。
在任何事实世界的数据集中,通常都会有一些数据科学家和机器学习工程师必须解决的缺失数据,否则,它可能会导致开发数据时呈现一些问题。
表中短少数据
因而,在这篇文章中,我将展现一些可用于解决数据驱动我的项目中失落数据的技术,并可能打消在构建数据管道时失落数据可能导致的问题。
为什么你应该解决失落的数据
在持续 如何 解决问题之前,必须首先理解 为什么 须要解决失落的数据。
数据的确是所有数据迷信和机器学习我的项目的次要驱动力。它是机器做出所有决定的所有我的项目的外围因素。
尽管缺失数据的存在的确令人丧气,但从数据集中彻底消除它可能并不总是正确的办法。例如,思考下图。
表中短少数据
如果您思考打消所有至多有一个缺失值的行,它:
1 缩小数据集中的数据点数量
下图所示,齐全回绝蕴含任何缺失值的行会显着缩小数据集中的行数。
删除具备至多一个 NaN 值的行
2 导致咱们曾经领有的其余有价值(和正确)信息的失落
在具备至多一个 NaN 值的行中标记的非 NaN 值
即便没有 B 察看到的值,咱们依然能够准确地晓得 A,C 对应值,这依然十分有价值。
解决缺失数据
当初您曾经理解了为什么要解决缺失数据,让咱们理解解决缺失数据的技术方面。
每当您在表格数据中遇到缺失值时,您基本上只有三个选项可供选择,如下图所示:
解决缺失数据的三种办法
上面让咱们具体探讨这三种办法。
1 保留缺失的数据
==========
顾名思义,这种办法相对疏忽了数据集中任何缺失数据点的存在。
不对 DataFrame 利用任何转换
然而,在这里,实质上假如失落的数据点不会在数据管道中造成任何问题,并且所利用的办法善于解决失落的数据。
因而,数据科学家或机器学习工程师的工作是决定如果失落的数据放弃原样,他们的算法是否能够工作。
2 删除缺失的数据
==========
接下来,设想一下,如上所述,保留失落的数据对于您的特定用例是不可行的。
在这种状况下,齐全删除失落的数据可能是一个继续前进的方向。
这里的次要想法是从 DataFrame 中删除具备任何缺失值的整行(如果您的用例须要基于系列的剖析,则删除一列)。
换句话说,在这种技术中,您只保留与每一列(或行)对应的非空值的数据行(或列),并将数据集视为删除的行从未存在过。
逐行抛弃
顾名思义,这里的指标是删除蕴含缺失值的 DataFrame 行。
下图描述了逐行降落。
删除具备至多一个 NaN 值的行
在面向行的删除中,列数放弃不变。
逐列删除
与逐行删除相比,逐列删除波及删除蕴含缺失值的 DataFrame 的列(或系列)。
删除具备至多一个 NaN 值的列
在面向列的删除中,行数放弃不变。
3 填补缺失的数据
==========
最初一种技术波及用一些值填充缺失的数据,该值可能是给定未察看地位的最佳估计值。
用随机策略替换缺失值
该策略可能波及用列的 平均值、中值或列的最频繁值(众数)填充 缺失数据——具体取决于列中值的类型。
这是因为 平均值、中位数和众数 只能针对数值进行预计。然而,在分类列的状况下,均值和中位数没有意义。
此外,填充规范齐全取决于您的特定数据源、您正在解决的问题以及评估该特定缺失数据点的舒服水平。
执行
寻找缺失值的最佳估计值的最罕用技术包含均值、中值和众数,如下所示:
- 用平均值填充:
均值策略用列的平均值替换缺失值。
如上所述,均值策略没有替换colB
.
- 填充中位数:
接下来,中值策略将列中的缺失值替换为中值。这是在上面实现的:
再一次,最后短少的值 colB
依然充斥了 NaN
值。
- 填充 众数:
最初,用 众数 填充,将缺失值替换为列中呈现频率最高的值,如下所示:
您还能够对不同的列利用不同的填充策略,如下所示:
colA
在这里,咱们用 colA
的平均值和 colB
的众数 填充缺失值。
论断
具体来说,咱们钻研了为什么解决缺失数据对您的数据管道至关重要,而后是解决缺失数据的罕用策略。
在解决缺失数据时,您应该记住,咱们在本文中探讨的三种办法(放弃、抛弃和填充)中没有正确的办法。这是因为每种状况都不同。
依据状况须要,始终由您决定抉择哪种具体方法。
谢谢浏览!