当前位置: 首页 > 编程日记 > 正文

2021年最有用的数据清洗 Python 库

dfdfc929f22fcf12c76ccf7164a5416c.gif

作者 | 周萝卜

来源 | 萝卜大杂烩

大多数调查表明,数据科学家和数据分析师需要花费 70-80% 的时间来清理和准备数据以进行分析。

对于许多数据工作者来说,数据的清理和准备也往往是他们工作中最不喜欢的部分,因此他们将另外 20-30% 的时间花在抱怨上,这虽然是一个玩笑,但是却很好的反应了数据清洗在数据分析工作当中的特殊地位

在平时的工作生活中,数据总是会出现某些不一致、缺失的输入、不相关的信息、重复的信息或彻头彻尾的错误等等情况。尤其是当数据来自不同来源时,每个来源都会有自己的一套怪癖、挑战和不规则之处。凌乱的数据是没有用处的,有时候甚至会起到反方向作用,这就是数据科学家花费大部分时间来理解所有数据的原因

虽然清理和准备数据既繁琐又辛苦,但是我们的数据越干净、越有条理,后面的一切工作都会变得更快、更轻松、更高效。

本文就来分享精选的 15 个最有用的 Python 数据清理库,希望在数据分析的路上,大家都能越快轻松!

  • NumPy

  • Pandas

  • Matplotlib

  • Datacleaner

  • Dora

  • Seaborn

  • Arrow

  • Scrubadub

  • Tabulate

  • Missingno

  • Modin

  • Ftfy

  • SciPy

  • Dabl

  • Imblearn

NumPy

NumPy 是一个快速且易于使用的开源科学计算 Python 库,它也是数据科学生态系统的基础库,因为 Pandas 和 Matplotlib 等许多最流行的 Python 库都是建立在 NumPy 之上的

除了作为其他强大库的基础之外,NumPy 还具有许多特性,使其成为 Python 数据分析不可或缺的一部分。由于其速度和多功能性,NumPy 的矢量化、索引和广播概念代表了数组计算的事实标准,NumPy 在处理多维数组时尤为出色。它还提供了一个全面的数值计算工具箱,如线性代数例程、傅立叶变换等

NumPy 可以为很多人做很多事情,其高级语法允许任何背景或经验水平的程序员使用其强大的数据处理能力。例如,基于 NumPy 生成了有史以来第一张黑洞图像,它还证实了引力波的存在,目前正在各种科学研究中都起着重要的作用

就是这样一个涵盖从运动到太空的所有内容的程序也可以帮助我们管理和清理数据,不得不说,Numpy 库太神奇了

Pandas

Pandas 是由 NumPy 提供支持的库,它是 Python 中使用最广泛的 数据分析和操作库

Pandas 快速且易于使用,其语法非常人性化,再加上其在操作 DataFrame 方面拥有令人难以置信的灵活性,使其成为分析、操作和清理数据不可或缺的工具

这个强大的 Python 库不仅可以处理数字数据,还可以处理文本数据和日期数据。它允许我们加入、合并、连接或复制 DataFrame,并使用 drop() 函数轻松添加或删除列或行

简而言之,Pandas 结合了速度、易用性和灵活的功能,创建了一个非常强大的工具,使数据操作和分析变得快速而简单

Matplotlib

了解我们的数据是清理过程的关键部分,清理数据的目的就是使其易于理解。但是在我们拥有漂亮干净的数据之前,需要先了解凌乱数据中的问题,例如它们的种类和范围,然后才能对其进行有效的清理,这个操作的很大一部分取决于数据的准确和直观呈现的程度

Matplotlib 以其令人印象深刻的数据可视化而闻名,这使其成为数据清理工作中的宝贵工具,它是使用 Python 生成图形、图表和其他 2D 数据可视化的首选工具库

我们可以在数据清理中使用 Matplotlib,通过生成分布图来帮助我们了解数据的不足之处

Datacleaner

Datacleaner 是一个基于 Pandas DataFrame 的第三方库,虽然 Datacleaner 出现的时间比较短并且不如 Pandas 流行,但是,Datacleaner 有一种独特的方法,它结合了一些典型的数据清理功能并使其自动化,这为我们节省了宝贵的时间和精力

使用 Datacleaner,我们可以在逐列的基础上使用众数或中位数轻松替换缺失值,对分类变量进行编码,并删除具有缺失值的行

Dora

Dora 库使用 Scikit-learn、Pandas 和 Matplotlib 进行探索性分析,或者更具体地说,用于自动化探索性分析中最不受欢迎的方面。除了处理特征选择、提取和可视化之外,Dora 还优化和自动化数据清理

Dora 将通过许多数据清理功能为我们节省宝贵的时间和精力,例如输入缺失值、读取缺失值和缩放不佳的值的数据以及输入变量的缩放值等等

此外,Dora 提供了一个简单的界面,用于在我们转换数据时保存数据快照,并以其独特的数据版本控制功能与其他 Python 包区别开来

Seaborn

在前面,我们讨论了可视化数据以揭示数据缺陷和不一致的重要性。在解决数据中的问题之前,我们需要知道它们是什么以及它们在哪里,此时使用数据可视化就是最好的方案。虽然对于许多 Python 用户来说,Matplotlib 是数据可视化的首选库,然而一些用户发现 Matplotlib 在自定义数据可视化选项方面的局限性也非常大,于是我们有了Seaborn。

Seaborn 是一个数据可视化包,它建立在 Matplotlib 之上,可生成有吸引力且信息丰富的统计图形,同时提供可定制的数据可视化

它也改进了在 Pandas 的 DataFrames 中的运行效率,可以更加紧密的与 Pandas 相结合,使探索性分析和数据清理更加愉快

Arrow

提高数据质量的一个重要方面是在整个 DataFrame 中创建统一性和一致性,对于试图在处理日期和时间时创建统一性的 Python 开发人员来说,这个过程可能往往会比较困难。经常在花费了无数个小时和无数行代码之后,日期和时间格式化的特殊困难仍然存在

Arrow 是一个 Python 库,专门用于处理这些困难并创建数据一致性。它的省时功能包括时区转换;自动字符串格式化和解析;支持 pytz、dateutil 对象、ZoneInfo tzinfo;生成范围、下限、时间跨度和上限,时间范围从微秒到数年不等

Arrow 可以识别时区(与标准 Python 库不同),并且默认为 UTC。它通过更少的代码和更少的输入授予用户更熟练的日期和时间操作命令。这意味着我们可以为我们的数据带来更大的一致性,同时减少花在时钟上的时间

Scrubadub

Scrubadub 是金融和医疗数据科学家的最爱,它是一个 Python 库,专门用于从自由文本中消除个人身份信息 (PII)

这个简单、免费和开源的软件包可以轻松地从我们的数据中删除敏感的个人信息,从而保护当事人的隐私和安全

Scrubadub 目前允许用户清除以下信息的数据:

  • 电子邮件地址

  • 网址

  • 姓名

  • Skype 用户名

  • 电话号码

  • 密码/用户名组合

  • 社会安全号码

Tabulate

只需调用一个函数,Tabulate 就可以使用我们的数据创建小型且有吸引力的表格,由于具有数字格式、标题和小数列对齐等许多功能,这些表格具有很高的可读性

这个开源库还允许用户使用其他工具和语言处理表格数据,让用户能够以其他擅长的格式(如 HTML、PHP 或 Markdown Extra)输出数据

Missingno

处理缺失值是数据清理的主要方面之一,Missingno 库应运而生。它逐列识别和可视化 DataFrame 中的缺失值,以便用户可以看到他们数据所处的状态

将问题可视化是解决问题的第一步,而 Missingno 是一个简单易用的库,可以很好的完成这项工作

Modin

正如我们上面提到的,Pandas 已经是一个快速的库了,但 Modin 将 Pandas 带到一个全新的水平。Modin 通过分发数据和计算速度来提高 Pandas 的性能

Modin 用户将受益于与 Pandas 语法的完美契合和不显眼的集成,可以将 Pandas 的速度提高多达 400%!

Ftfy

Ftfy 的诞生是为了一个简单的任务:将糟糕的 Unicode 和无用的字符转换为相关且可读的文本数据

比如:

“quoteâ€\x9d = "quote"
ü = ü
lt;3 = <3

无需花费大量时间处理文本数据,使用 Ftfy 就可以快速理解无意义的内容

SciPy

SciPy 不仅仅是一个库,它还是一个完整的数据科学生态系统

此外,SciPy 还提供了许多专用工具,其中之一是 Scikit-learn,完美可以利用其“Preprocessing”包进行数据清理和数据集标准化

Dabl

scikit-learn 项目的一名核心工程师开发了 Dabl 作为数据分析库,以简化数据探索和预处理的过程

Dabl 有一个完整的流程来检测数据集中的某些数据类型和质量问题,并自动应用适当的预处理程序

它可以处理缺失值,将分类变量转换为数值,它甚至具有内置的可视化选项以促进快速数据探索

Imblearn

我们要介绍的最后一个库是 Imbalanced-learn(缩写为 Imblearn),它依赖于 Scikit-learn 并为面临分类和不平衡类的 Python 用户提供工具支持

使用称为“undersampling”的预处理技术,Imblearn 将梳理完美的数据并删除数据集中的缺失、不一致或其他不规则数据

总结

我们的数据分析模型取决于我们输入的数据,并且我们的数据越干净,处理、分析和可视化就越简单,善于利用工具,会使我们的工作更加轻松愉快

虽然上面总结的工具不可能包含所有的数据清洗工具,但是我们只要选择适合我们的就可以了,希望今天的分享能够帮助到你~

910ba575e8f54aaac0b3380dc2723a7d.gif

f48624dc82bceab8d8d96a5a6deb9f5f.png

资讯

IEEE发布年终总结,AI奇迹不是故事

资讯

Log4j还没完事,新的漏洞又来

资讯

AI语言模型是否越大越好?

资讯

这个AI模型火上GitHub热榜

adc734f1a017530f80eda46e485d4885.png

分享

ede9a2d2ed2d304391a4c2244b5fb2a7.png

点收藏

80dcb22bd474951d7079b2356c8aa0c1.png

点点赞

a5c69b9f35b420dd34328689a2dab547.png

点在看

相关文章:

组合与继承之重写方法和字段

为什么80%的码农都做不了架构师&#xff1f;>>> 接上篇blog&#xff0c;scala里的字段和方法属于相同的命名空间&#xff0c;这让字段可以重写无参数方法。例如&#xff0c;你可以通过改变ArrayElement类中contents的实现将其从一个方法变为一个字段&#xff0c;而…

20165334 四则运算阶段性总结(第二周)

四则运算阶段性总结&#xff08;第二周&#xff09; 结对对象 学号 &#xff1a;20165334 姓名 &#xff1a; 李天龙 担任角色 &#xff08;驾驶员&#xff09;&#xff1a;李天龙 &#xff08;副驾驶&#xff09;&#xff1a;陈国超 一、实验实现步骤 整数计算类分数计算类自动…

取消掉Transfer-Encoding:chunked

有时候&#xff0c;Web服务器生成HTTP Response是无法在Header就确定消息大小的&#xff0c;这时一般来说服务器将不会提供Content-Length的头信息&#xff0c;而采用Chunked编码动态的提供body内容的长度。进行Chunked编码传输的HTTP Response会在消息头部设置&#xff1a;Tra…

【LeetCode】142 - Linked List Cycle II

Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Follow up:Can you solve it without using extra space? Solution&#xff1a; Discuss上的分析&#xff1a;Suppose the first meet at step k,the length of the Cycle …

3000 字详解 Pandas 数据查询,建议收藏

作者 | 俊欣来源 | 关于数据分析与可视化今天小编来和大家说一说怎么从DataFrame数据集中筛选符合指定条件的数据&#xff0c;希望会对读者朋友有所帮助。导入数据集和模块我们先导入pandas模块&#xff0c;并且读取数据&#xff0c;代码如下import pandas as pd df pd.read_c…

stylus使用文档总结:内置方法+参数+条件+迭代+导入+继承

一、内置方法 返回各种颜色的比重&#xff08;如red(color)等&#xff09; 颜色函数是CSS预处里器中内置的颜色函数功能&#xff0c;这些功能可以对颜色值进行处理&#xff0c;例如颜色的变亮、变暗、渐变颜色等处理十分的方便。 lighten(color, 10%); /* 返回的颜色在color基础…

用 Python 制作酷炫的可视化大屏,特简单!

作者 | 小F来源 | 法纳斯特在数据时代&#xff0c;我们每个人既是数据的生产者&#xff0c;也是数据的使用者&#xff0c;然而初次获取和存储的原始数据杂乱无章、信息冗余、价值较低。要想数据达到生动有趣、让人一目了然、豁然开朗的效果&#xff0c;就需要借助数据可视化。以…

HTTP协议中的Tranfer-Encoding:chunked编码解析

当不能预先确定报文体的长度时&#xff0c;不可能在头中包含Content-Length域来指明报文体长度&#xff0c;此时就需要通过Transfer-Encoding域来确定报文体长度。通常情况下&#xff0c;Transfer-Encoding域的值应当为chunked,表明采用chunked编码方式来进行报文体的传输。chu…

[转] splice系列系统调用

关注splice系列系统调用&#xff08;包括splice&#xff0c;tee和vmsplice&#xff09;已经有一段时间了&#xff0c;开始的时候并未能领会splice的意义所在&#xff0c;致使得出了“splice系列系统调用不怎么实用”的错误结论。随着内核研究的深入&#xff0c;才逐渐懂得&…

嵌入式s5vp210裸机 KXTF9-2050(G-sensor)

1.KXTF9-2050简介 KXTF9-205是G-sensor的一种&#xff0c;G-sensor&#xff08;Gravity sensor&#xff09;&#xff0c;重力传感器&#xff0c;又名加速度传感器&#xff08;accelerometer&#xff09;&#xff0c;是能感知加速度大小的MEMS(微机电系统)传感器。使用I2C协议和…

JavaScript面向对象编程

自从有了Ajax这个概念&#xff0c;JavaScript作为Ajax的利器&#xff0c;其作用一路飙升。JavaScript最基本的使用&#xff0c;以及语法、浏览器对象等等东东在这里就不累赘了。把主要篇幅放在如何实现JavaScript的面向对象编程方面。1. 用JavaScript实现类 JavaScritpt没…

sublime text3 前端插件介绍

Emmet插件 Emmet插件可以说是使用Sublime Text进行前端开发必不可少的插件 它让编写HTML代码变得极其简单高效 基本用法&#xff1a;输入标签简写形式&#xff0c;然后按Tab键 关于Emmet的更多介绍&#xff0c;请查看官方文档 这份速查表&#xff0c;可以帮你快速记忆简写形式 …

如何使用 OpenCV Python 检测颜色

作者 | 小白来源 | 小白学视觉在这篇文章中&#xff0c;我们将看到如何使用 Python 中的 OpenCV 模块检测颜色&#xff0c;进入这个领域的第一步就是安装下面提到的模块。pip install opencv-python pip install numpy然后&#xff0c;导入模块。读取图像并使用 OpenCV 模块中的…

使用树形结构保存实体

阅读原文请访问我的博客BrightLoongs Blog之前在项目需要实现一个功能——将xml文件映射成实体&#xff0c;然后对映射的实体进行逻辑处理&#xff0c;最后保存到数据库中&#xff1b;由于xml结构的数据是结构化的数据&#xff0c;所以需要保证保存的数据具有正确的主外键关联。…

在Javascript中使用面向对象的编程

by Mike Koss March 26th, 2003 这是一篇&#xff0c;我个人认为最好的&#xff0c;Javascript面向对象编程的文章。翻译不好的地方&#xff0c;还望大家指正&#xff0c;谢谢。 如果您需要&#xff0c;可以访问下面的地址取得原文&#xff1a; http://mckoss.com/jscript/obj…

马斯克嘲笑「元宇宙」的想法,并给年轻人5条鸡汤

编译 | 禾木木出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;SpaceX 和特斯拉的CEO 马斯克在接受 The Babylon Bee 的采访中&#xff0c;当被问到元宇宙的问题时&#xff0c;马斯克只笑了笑。马斯克表示&#xff1a;“我对元宇宙这个概念没有什么印象&#xff0c;尽…

OpenLDAP自定义属性的启用

2019独角兽企业重金招聘Python工程师标准>>> # ucode# This multivalued field is used to record the values of the license or# registration plate associated with an individual.attributetype ( 2.16.840.1.113730.3.1.900 NAME ucode DESC user code …

硬中断与软中断的区别!

硬中断&#xff1a; 1. 硬中断是由硬件产生的&#xff0c;比如&#xff0c;像磁盘&#xff0c;网卡&#xff0c;键盘&#xff0c;时钟等。每个设备或设备集都有它自己的IRQ&#xff08;中断请求&#xff09;。基于IRQ&#xff0c;CPU可以将相应的请求分发到对应的硬件驱动上&am…

smarty模板

<?phprequire(../libs/Smarty.class.php);$smarty new Smarty;//$smarty->force_compile true;//$smarty->debugging true;//$smarty->caching true;//$smarty->cache_lifetime 120;$Name"Linux环境高级编程";$smarty->assign("name&qu…

乘“云原生”之风、踏“数字化”的浪,《新程序员003》开启预售!

12月30日&#xff0c;新年的钟声还有两天敲响&#xff0c;CSDN倾情策划出品的《新程序员003&#xff1a;云原生和全面数字化实践》&#xff08;以下简称《新程序员003》&#xff09;重磅开启预售&#xff01;新一年&#xff0c;新气象~预祝所有开发者在新的一年中大神附体&…

BZOJ4245 : [ONTAK2015]OR-XOR

按位考虑&#xff0c;逐步确定答案。 设当前是第i位&#xff0c;求出第i位的前缀异或和。 若存在m个0且所有数字异或和为0&#xff0c;那么答案的这一位可以为0&#xff0c;并把所有1的位置给标记为不可选。 否则答案的这一位只能是1。 时间复杂度$O(n\log n)$。 #include<c…

关键词排名下降怎么办-优八学院给你支招

优八学院下面为大家解决一下关于关键词排名下降的问题。在我们进行网站优化的时候&#xff0c;往往会出现关键词排名下降的现象。对于这种情况&#xff0c;我们要区别是否是正常的浮动&#xff0c;由于有时候搜索引擎也会发生错误&#xff0c;导致关键词排名下降&#xff0c;我…

全面解析 Kmeans 聚类算法(Python)

作者 | 泳鱼来源 | 算法进阶一、聚类简介Clustering (聚类)是常见的unsupervised learning (无监督学习)方法&#xff0c;简单地说就是把相似的数据样本分到一组&#xff08;簇&#xff09;&#xff0c;聚类的过程&#xff0c;我们并不清楚某一类是什么&#xff08;通常无标签信…

.htaccess的重写规则

.htaccess基本语法和应用 .htaccess是Apache服务器的一个非常强大的分布式配置文件。正确的理解和使用.htaccess文件&#xff0c;可以帮助我们优化自己的服务器或者虚拟主机。 如何启用htaccess 以windows为例&#xff0c;进入apache/conf目录&#xff0c;找到httpd.conf文件&a…

amaze ui各个模块简单说明

amaze ui各个模块简单说明 导航添加依据 http://amazeui.org/css/ 下面内容属学习笔记&#xff0c;如有理解偏差和错误请留言相告&#xff0c;感谢&#xff01;* &#xff08;官网这块写的很详细&#xff09; 一、基本样式 1.统一样式 说明了为什么使用Normalize&#xff0c;而…

由浅入深剖析.htaccess

1、.htaccess文件使用前提.htaccess的主要作用就是实现url改写&#xff0c;也就是当浏览器通过url访问到服务器某个文件夹时&#xff0c;作为主人&#xff0c;我们可以来接待这个url&#xff0c;具体地怎样接待它&#xff0c;就是此文件的作用。所有的访问都是通过URL实现&…

分享几个 Pyecharts 技巧,助你画出更直观/炫酷的图表

作者 | 俊欣来源 | 关于数据分析与可视化想必大家应该也已经看到很多关于数据分析的内容了&#xff0c;今天小编就为大家来分享一下国产可视化库pyecharts在绘制图表时一些的技巧&#xff0c;帮助读者画出更加酷炫以及可读性更高的图&#xff0c;当然在这之前呢&#xff0c;我们…

虚拟化--006 VCAC的sso配置成功

转载于:https://blog.51cto.com/williamliuwen/1686492

ionic app 开发和生产环境的配置

前言 像 Angular2 一样&#xff0c;希望 ionic 可以提供 2 个文件 ( environment.dev.ts 和 environment.prod.ts )&#xff0c;其中包含与开发和生产环境相对应的不同值的变量。在构建过程中&#xff0c;要在应用程序中绑定适当的文件。 实现步骤 在 src/config 中&#xff0c…

Android Properties 存储

1.初始化 1 private static void initProperties(){2 File logFile new File(Constants.PROGRESS_PROPERTIES);3 props new Properties();4 if(!logFile.exists()){5 //创建并初始化配置文件6 FileUtils.createFolder(Const…