大多数调查表明,数据科学家和数据分析师需要花费 70-80% 的时间来清理和准备数据以进行分析。
对于许多数据工作者来说,数据的清理和准备也往往是他们工作中最不喜欢的部分,因此他们将另外 20-30% 的时间花在抱怨上,这虽然是一个玩笑,但是却很好的反映了数据清洗在数据分析工作当中的特殊地位
在平时的工作生活中,数据总是会出现某些不一致、缺失的输入、不相关的信息、重复的信息或彻头彻尾的错误等等情况。尤其是当数据来自不同来源时,每个来源都会有自己的一套怪癖、挑战和不规则之处。凌乱的数据是没有用处的,有时候甚至会起到反方向作用,这就是数据科学家花费大部分时间来理解所有数据的原因
虽然清理和准备数据既繁琐又辛苦,但是我们的数据越干净、越有条理,后面的一切工作都会变得更快、更轻松、更高效。
本文就来分享精选的 15 个最有用的 Python 数据清理库,希望在数据分析的路上,大家都能越快轻松!
NumPy 是一个快速且易于使用的开源科学计算 Python 库,它也是数据科学生态系统的基础库,因为 Pandas 和 Matplotlib 等许多最流行的 Python 库都是建立在 NumPy 之上的
除了作为其他强大库的基础之外,NumPy 还具有许多特性,使其成为 Python 数据分析不可或缺的一部分。由于其速度和多功能性,NumPy 的矢量化、索引和广播概念代表了数组计算的事实标准,NumPy 在处理多维数组时尤为出色。它还提供了一个全面的数值计算工具箱,如线性代数例程、傅立叶变换等
NumPy 可以为很多人做很多事情,其高级语法允许任何背景或经验水平的程序员使用其强大的数据处理能力。例如,基于 NumPy 生成了有史以来第一张黑洞图像,它还证实了引力波的存在,目前正在各种科学研究中都起着重要的作用
就是这样一个涵盖从运动到太空的所有内容的程序也可以帮助我们管理和清理数据,不得不说,Numpy 库太神奇了
Pandas 是由 NumPy 提供支持的库,它是 Python 中使用最广泛的 数据分析和操作库
Pandas 快速且易于使用,其语法非常人性化,再加上其在操作 DataFrame 方面拥有令人难以置信的灵活性,使其成为分析、操作和清理数据不可或缺的工具
这个强大的 Python 库不仅可以处理数字数据,还可以处理文本数据和日期数据。它允许我们加入、合并、连接或复制 DataFrame,并使用 drop() 函数轻松添加或删除列或行
简而言之,Pandas 结合了速度、易用性和灵活的功能,创建了一个非常强大的工具,使数据操作和分析变得快速而简单
了解我们的数据是清理过程的关键部分,清理数据的目的就是使其易于理解。但是在我们拥有漂亮干净的数据之前,需要先了解凌乱数据中的问题,例如它们的种类和范围,然后才能对其进行有效的清理,这个操作的很大一部分取决于数据的准确和直观呈现的程度
Matplotlib 以其令人印象深刻的数据可视化而闻名,这使其成为数据清理工作中的宝贵工具,它是使用 Python 生成图形、图表和其他 2D 数据可视化的首选工具库
我们可以在数据清理中使用 Matplotlib,通过生成分布图来帮助我们了解数据的不足之处
Datacleaner 是一个基于 Pandas DataFrame 的第三方库,虽然 Datacleaner 出现的时间比较短并且不如 Pandas 流行,但是,Datacleaner 有一种独特的方法,它结合了一些典型的数据清理功能并使其自动化,这为我们节省了宝贵的时间和精力
使用 Datacleaner,我们可以在逐列的基础上使用众数或中位数轻松替换缺失值,对分类变量进行编码,并删除具有缺失值的行
Dora 库使用 Scikit-learn、Pandas 和 Matplotlib 进行探索性分析,或者更具体地说,用于自动化探索性分析中最不受欢迎的方面。除了处理特征选择、提取和可视化之外,Dora 还优化和自动化数据清理
Dora 将通过许多数据清理功能为我们节省宝贵的时间和精力,例如输入缺失值、读取缺失值和缩放不佳的值的数据以及输入变量的缩放值等等
此外,Dora 提供了一个简单的界面,用于在我们转换数据时保存数据快照,并以其独特的数据版本控制功能与其他 Python 包区别开来
在前面,我们讨论了可视化数据以揭示数据缺陷和不一致的重要性。在解决数据中的问题之前,我们需要知道它们是什么以及它们在哪里,此时使用数据可视化就是最好的方案。虽然对于许多 Python 用户来说,Matplotlib 是数据可视化的首选库,然而一些用户发现 Matplotlib 在自定义数据可视化选项方面的局限性也非常大,于是我们有了Seaborn。
Seaborn 是一个数据可视化包,它建立在 Matplotlib 之上,可生成有吸引力且信息丰富的统计图形,同时提供可定制的数据可视化
它也改进了在 Pandas 的 DataFrames 中的运行效率,可以更加紧密的与 Pandas 相结合,使探索性分析和数据清理更加愉快
提高数据质量的一个重要方面是在整个 DataFrame 中创建统一性和一致性,对于试图在处理日期和时间时创建统一性的 Python 开发人员来说,这个过程可能往往会比较困难。经常在花费了无数个小时和无数行代码之后,日期和时间格式化的特殊困难仍然存在
Arrow 是一个 Python 库,专门用于处理这些困难并创建数据一致性。它的省时功能包括时区转换;自动字符串格式化和解析;支持 pytz、dateutil 对象、ZoneInfo tzinfo;生成范围、下限、时间跨度和上限,时间范围从微秒到数年不等
Arrow 可以识别时区(与标准 Python 库不同),并且默认为 UTC。它通过更少的代码和更少的输入授予用户更熟练的日期和时间操作命令。这意味着我们可以为我们的数据带来更大的一致性,同时减少花在时钟上的时间
Scrubadub 是金融和医疗数据科学家的最爱,它是一个 Python 库,专门用于从自由文本中消除个人身份信息 (PII)
这个简单、免费和开源的软件包可以轻松地从我们的数据中删除敏感的个人信息,从而保护当事人的隐私和安全
Scrubadub 目前允许用户清除以下信息的数据:
只需调用一个函数,Tabulate 就可以使用我们的数据创建小型且有吸引力的表格,由于具有数字格式、标题和小数列对齐等许多功能,这些表格具有很高的可读性
这个开源库还允许用户使用其他工具和语言处理表格数据,让用户能够以其他擅长的格式(如 HTML、PHP 或 Markdown Extra)输出数据
处理缺失值是数据清理的主要方面之一,Missingno 库应运而生。它逐列识别和可视化 DataFrame 中的缺失值,以便用户可以看到他们数据所处的状态
将问题可视化是解决问题的第一步,而 Missingno 是一个简单易用的库,可以很好的完成这项工作
正如我们上面提到的,Pandas 已经是一个快速的库了,但 Modin 将 Pandas 带到一个全新的水平。Modin 通过分发数据和计算速度来提高 Pandas 的性能
Modin 用户将受益于与 Pandas 语法的完美契合和不显眼的集成,可以将 Pandas 的速度提高多达 400%!
Ftfy 的诞生是为了一个简单的任务:将糟糕的 Unicode 和无用的字符转换为相关且可读的文本数据
比如:
“quoteâ€\x9d = "quote"
ü = ü
lt;3 = <3
无需花费大量时间处理文本数据,使用 Ftfy 就可以快速理解无意义的内容
SciPy 不仅仅是一个库,它还是一个完整的数据科学生态系统
此外,SciPy 还提供了许多专用工具,其中之一是 Scikit-learn,完全可以利用其“Preprocessing”包进行数据清理和数据集标准化
scikit-learn 项目的一名核心工程师开发了 Dabl 作为数据分析库,以简化数据探索和预处理的过程
Dabl 有一个完整的流程来检测数据集中的某些数据类型和质量问题,并自动应用适当的预处理程序
它可以处理缺失值,将分类变量转换为数值,它甚至具有内置的可视化选项以促进快速数据探索
我们要介绍的最后一个库是 Imbalanced-learn(缩写为 Imblearn),它依赖于 Scikit-learn 并为面临分类和不平衡类的 Python 用户提供工具支持
使用称为“undersampling”的预处理技术,Imblearn 将梳理完美的数据并删除数据集中的缺失、不一致或其他不规则数据
我们的数据分析模型取决于我们输入的数据,并且我们的数据越干净,处理、分析和可视化就越简单,善于利用工具,会使我们的工作更加轻松愉快
虽然上面总结的工具不可能包含所有的数据清洗工具,但是我们只要选择适合我们的就可以了,希望今天的分享能够帮助到你~
好了,今天分享就到这里,如果大家觉得满意请务必点个赞 + 在看 支持下