为什么你应该处理丢失的数据,这里是如何做到的
为什么你应该处理丢失的数据,这里是如何做到的
使用 Pandas 处理缺失数据的综合指南
在每个现实世界的数据集中,丢失数据值几乎是不可避免的,在典型的数据收集过程中几乎不可能避免。
这可能由于各种原因而发生,例如数据输入过程中的错误、数据收集过程中的技术问题、文件丢失/损坏以及许多其他原因。
在任何现实世界的数据集中,通常都会有一些数据科学家和机器学习工程师必须处理的缺失数据,否则,它可能会导致开发数据管道时出现一些问题。
Missing Data in a Table (Image by Author)
因此,在这篇文章中,我将展示一些可用于处理数据驱动项目中丢失数据的技术,并可能消除在构建数据管道时丢失数据可能导致的问题。
文章的亮点如下:
· 为什么你应该处理丢失的数据 **
·** 处理缺失数据 **
·** #1 保留缺失的数据 **
·** #2 删除缺失的数据 ******
·** #3 填补缺失的数据 **
·** 结论
让我们开始吧!
为什么你应该处理丢失的数据
在继续之前 如何 要解决问题,必须了解 为什么 首先有必要处理丢失的数据。
数据确实是所有数据科学和机器学习项目的主要驱动力。它是机器做出所有决定的所有项目的核心要素。
虽然缺失数据的存在确实令人沮丧,但从数据集中彻底消除它可能并不总是正确的方法。例如,考虑下图。
Missing Data in a Table (Image by Author)
如果您考虑消除所有至少有一个缺失值的行,它:
#1 减少数据集中的数据点数量
如下图所示,完全拒绝包含任何缺失值的行会显着减少数据集中的行数。
Removing rows with atleast one NaN value (Image by Author)
#2 导致我们已经拥有的其他有价值(和正确)信息的丢失
Non-NaN values marked in a row that has atleast one NaN value (Image by Author)
例如,在上面的 DataFrame 中,即使 ColB
中间一行没有被观察到,我们仍然精确地知道对应的值 可乐
和 colB
,这对于数据管道仍然非常有价值。
处理缺失数据
现在您已经了解了为什么要处理缺失数据,让我们了解处理缺失数据的技术方面。
每当您在表格数据中遇到缺失值时,您基本上只有三个选项可供选择,如下图所示:
Three methods to Handle Missing Data (Image by Author)
下面让我们详细讨论这三种方法。
#1 保留缺失的数据
顾名思义,这种方法绝对忽略了数据集中任何缺失数据点的存在。
在这种情况下,数据集转换方法返回原始数据集的副本,如下图所示:
Applying no transformation to the DataFrame (Image by Author)
然而,在这里,本质上假设丢失的数据点不会在数据管道中造成任何问题,并且所利用的方法擅长处理丢失的数据。
因此,数据科学家或机器学习工程师的工作是决定如果丢失的数据保持原样,他们的算法是否可以工作。
下面定义了保持丢失数据不变的方法。我们定义函数 处理缺失数据()
它将源 DataFrame 作为参数并在不转换的情况下返回它。
如上面的实现所示,原始 DataFrame 保持不变。
#2 删除缺失的数据
接下来,想象一下,如上所述,保留丢失的数据对于您的特定用例是不可行的。
在这种情况下,完全删除丢失的数据可能是一个继续前进的方向。
这里的主要想法是从 DataFrame 中删除具有任何缺失值的整行(如果您的用例需要基于系列的分析,则删除一列)。
换句话说,在这种技术中,您只保留与每一列(或行)对应的非空值的数据行(或列),并将数据集视为删除的行从未存在过。
逐行丢弃
顾名思义,这里的目标是删除包含缺失值的 DataFrame 行。
下图描绘了逐行下降。
Removing rows with atleast one NaN value (Image by Author)
在面向行的删除中,列数保持不变。
逐列下降
与逐行删除相比,逐列删除涉及删除包含缺失值的 DataFrame 的列(或系列)。
Removing columns with atleast one NaN value (Image by Author)
在面向行的删除中,行数保持不变。
执行
类似于上面讨论的保留缺失数据的策略,接下来,我们将实现 处理缺失数据()
从 DataFrame 中删除缺少值的行(或列)的函数。
您可以使用 DataFrame 从 DataFrame 中删除行[ 降低()](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.dropna.html)
方法如下图:
axis 参数指定要从 DataFrame 中删除缺失值的方向(按行或按列)。
-
轴=0
执行面向行的删除。如下所示: -
轴=1
执行面向列的删除,如下面的代码块所示:
#3 填补缺失的数据
最后一种技术涉及用一些值填充缺失的数据,该值可能是给定未观察位置的最佳估计值,如下所示。
Replacing missing values with a random strategy (Image by Author)
该策略可能涉及用列的平均值、中值或列的最频繁值(众数)填充缺失数据——具体取决于列中值的类型。
这是因为平均值、中位数和众数只能针对数值进行估计。但是,在分类列的情况下,均值和中位数没有意义。
此外,填充标准完全取决于您的特定数据源、您正在解决的问题以及评估该特定缺失数据点的舒适程度。
执行
寻找缺失值的最佳估计值的最常用技术包括均值、中值和众数,如下所示:
- 用平均值填充:
均值策略用列的平均值替换缺失值。
如上所述,均值策略并没有替换任何缺失值 colB
.
- 填充中位数:
接下来,中值策略将列中的缺失值替换为中值。这是在下面实现的:
再一次,最初缺少的值 colB
仍然充满 钠
价值观。
- 填充模式:
最后,用众数填充,将缺失值替换为列中出现频率最高的值,如下所示:
您还可以对不同的列应用不同的填充策略,如下所示:
在这里,我们将缺失值填入 可乐
平均 可乐
并且在模式下 colB
.
结论
最后,在这篇文章中,我演示了如何处理 Pandas DataFrame 中的缺失数据。具体来说,我们研究了为什么处理缺失数据对您的数据管道至关重要,然后是处理缺失数据的常用策略。
在处理缺失数据时,您应该记住,我们在本文中讨论的三种方法(保持、丢弃和填充)中没有正确的方法。这是因为每种情况都不同。
根据情况需要,始终由您决定选择哪种具体方法。
谢谢阅读!
成为数据科学专家!获取包含 450 多个 Pandas、NumPy 和 SQL 问题的免费数据科学掌握工具包。
✉️ 注册到我的电子邮件列表 不要错过另一篇关于数据科学指南、技巧和技巧、机器学习、SQL、Python 等的文章。 Medium 会将我的下一篇文章直接发送到您的收件箱。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明