使用 Pandas 处理缺失数据的综合指南
在每个现实世界的数据集中,丢失数据值几乎是不可避免的,在典型的数据收集过程中几乎不可能避免。
这可能由于各种原因而发生,例如数据输入过程中的错误、数据收集过程中的技术问题、文件丢失/损坏以及许多其他原因。
在任何现实世界的数据集中,通常都会有一些数据科学家和机器学习工程师必须处理的缺失数据,否则,它可能会导致开发数据管道时出现一些问题。
因此,在这篇文章中,我将展示一些可用于处理数据驱动项目中丢失数据的技术,并可能消除在构建数据管道时丢失数据可能导致的问题。
让我们开始!
为什么你应该处理丢失的数据
在继续如何解决问题之前,必须首先了解为什么需要处理丢失的数据。
数据确实是所有数据科学和机器学习项目的主要驱动力。 它是机器做出所有决定的所有项目的核心要素。
虽然缺失数据的存在确实令人沮丧,但从数据集中彻底消除它可能并不总是正确的方法。 例如,考虑下图。
如果您考虑消除所有至少有一个缺失值的行,它:
#1 减少数据集中的数据点数量
如下图所示,完全拒绝包含任何缺失值的行会显着减少数据集中的行数。
#2 导致我们已经拥有的其他有价值(和正确)信息的丢失
例如,在上面的 DataFrame 中,即使没有观察到中间行 ColB 的值,我们仍然可以精确地知道 colA 和 colB 中的对应值,这对于数据管道仍然非常有价值。
处理缺失数据
现在您已经了解了为什么要处理缺失数据,让我们了解处理缺失数据的技术方面。
每当您在表格数据中遇到缺失值时,您基本上只有三个选项可供选择,如下图所示:
下面让我们详细讨论这三种方法。
#1 保留缺失的数据
顾名思义,这种方法绝对忽略了数据集中任何缺失数据点的存在。
在这种情况下,数据集转换方法返回原始数据集的副本,如下图所示:
然而,在这里,本质上假设丢失的数据点不会在数据管道中造成任何问题,并且所利用的方法擅长处理丢失的数据。
因此,数据科学家或机器学习工程师的工作是决定如果丢失的数据保持原样,他们的算法是否可以工作。
下面定义了保持丢失数据不变的方法。 我们定义了函数 handle_missing_data() ,它将源 DataFrame 作为参数并在不转换的情况下返回它。
如上面的实现所示,原始 DataFrame 保持不变。
#2 删除缺失的数据
接下来,想象一下,如上所述,保留丢失的数据对于您的特定用例是不可行的。
在这种情况下,完全删除丢失的数据可能是一个继续前进的方向。
这里的主要想法是从 DataFrame 中删除具有任何缺失值的整行(或如果您的用例需要基于系列的分析,则为一列)。
换句话说,在这种技术中,您只保留那些具有对应于每一列(或行)的非空值的数据行(或列),并将数据集视为删除的行从未存在过。
逐行丢弃
顾名思义,这里的目标是删除包含缺失值的 DataFrame 行。
下图描绘了逐行下降。
在面向行的删除中,列数保持不变。
逐列下降
与逐行删除相比,逐列删除涉及删除包含缺失值的 DataFrame 的列(或系列)。
在面向行的删除中,行数保持不变。
执行
与上面讨论的保留缺失数据的策略类似,接下来电脑,我们将实现 handle_missing_data() 函数从 DataFrame 中删除具有缺失值的行(或列)。
您可以使用 dropna() 方法从 DataFrame 中删除行,如下所示:
axis 参数指定要从 DataFrame 中删除缺失值的方向(按行或按列)。
axis=0 执行面向行的删除。 如下所示:axis=1 执行面向列的删除,如下面的代码块所示:#3 填补缺失的数据
最后一种技术涉及用一些值填充缺失的数据,该值可能是给定未观察位置的最佳估计值,如下所示。
电脑该策略可能涉及用列的平均值、中值或列的最频繁值(众数)填充缺失数据——具体取决于列中值的类型。
这是因为平均值、中位数和众数只能针对数值进行估计。 但是,在分类列的情况下,均值和中位数没有意义。
此外,填充标准完全取决于您的特定数据源、您要解决的问题以及评估该特定缺失数据点的舒适程度。
执行
寻找缺失值的最佳估计值的最常用技术包括均值、中值和众数,如下所示:
用平均值填充:均值策略用列的平均值替换缺失值。
如上所述,均值策略没有替换 colB 中的任何缺失值。
填充中位数:接下来,中值策略将列中的缺失值替换为中值。 这是在下面实现的:
电脑再一次,最初从 colB 中丢失的值仍然用 NaN 值填充。
填充模式:最后,用众数填充,将缺失值替换为列中出现频率最高的值,如下所示:
您还可以对不同的列应用不同的填充策略,如下所示:
在这里,我们用 colA 的平均值和 colB 中的众数填充 colA 中的缺失值。
结论
最后,在这篇文章中,我演示了如何处理 Pandas DataFrame 中的缺失数据。 具体来说,我们研究了为什么处理缺失数据对您的数据管道至关重要,然后介绍了处理缺失数据的常用策略。
在处理缺失数据时,您应该记住,我们在本文中讨论的三种方法(保持、丢弃和填充)中没有正确的方法。 这是因为每种情况都不同。
根据情况需要,始终由您决定选择哪种具体方法。
谢谢阅读!
关注七爪网,获取更多APP/小程序/网站源码资源!
电脑