01.22 Pandas让Python变得更好

Pandas使用Python进行数据处理

我想谈了很长时间的事情是Pandas带给Python的力量。 Pandas是Python数据科学必不可少的软件包,因为它用途广泛且非常擅长处理数据。 我真正喜欢Pandas的一个组件是其出色的IPython和Numpy集成。 这就是说,使Pandas与Numpy直接交织在一起,就像花生酱与果冻一样。 难怪这两种组合都打包出售。

除了Smucker的Goober开玩笑之外,Pandas仅仅通过内置Python就能使Python成为Data Science更可行的语言。 这并不是说Python没有许多可以模仿这种效果的出色软件包,因为Python拥有数量众多的用于机器学习和数据处理的软件包。 Pandas使得相对困难的事情,或者在其他语言中更加痛苦的事情,在Python中变得异常容易。

IPython的

支持Pandas的最大事情是-Pandas本身。 该软件包来自第一方,旨在合并数据科学的主要内容,例如IPython Notebooks和Numpy。 将它们组合在一起的方式很有道理,但我不只是告诉您,我还将向您展示使用其他语言的软件包的感觉,这是我的最爱:

Julia

有趣的是,我们用来创建数据框架的软件包是DataFrames.jl。 当然,我们现在将使用逗号分隔值文件(CSV文件)。 所以第一步就是读取我们的数据……但是我们该怎么做呢? 在更改日志中,简要提到了一种称为read_table的方法,但是在大多数情况下,这似乎已被弃用。

嗯,这就是诀窍,为了使用DataFrames.jl读取我们的DataFrames,我们实际上必须获得另一个名为CSV.jl的程序包。 添加该软件包后,我们可以使用read()方法打开CSV文件:

<code>using CSVdf = CSV.read("Fizzbuzz")/<code>


太棒了,现在我们已经读完数据,但在顶部看到了一条有趣的消息……

<code>"省略了12列打印"/<code>

好吧,一切都很好,但是为什么呢? 出于某种奇怪的原因,他们选择根据列的特定长度,在Iframe外部渲染数据帧,并省略列。 那么我们如何显示所有列? 显示所有列非常容易,只需在show方法中添加bool类型参数即可,如下所示:

等一下那是什么 没错,它会转到基于文本的数据框,其中的列已打印

在彼此之上。

好消息是,我们过去不得不使用的旧的showall!()方法现在已弃用,这意味着当我们显示ALL COLUMNS时不必显示ALL ROWS。 这很可能是我不久前开始使用字典的原因……

好的,现在我们知道Julia的工作有多困难,但是Pandas呢? 好吧,您不会认为它是如此简单,但是您需要的唯一软件包是Pandas,您唯一需要的方法是read_csv,最后但并非最不重要的是,您可以使用函数df.head()进行打印 您选择的头部长度,然后使用df.tail()打印您选择的头部长度。 更不用说,它看起来像这样:

相信我,R的数据框架也不如Pandas好,在大多数情况下,使用R和Julia的人倾向于PyCall Pandas,而不是使用各自语言的数据框架包。

脾气暴躁的

Numpy是Python数据科学三大剑客的另一部分。 Numpy集成允许在数据帧内部使用所有Numpy的线性代数。 此外,Numpy的某些部分使数据处理变得更加容易。 只要看着我在眨眼间销毁一千多个空值!

重要的是要记住,由于这是一种编程语言,因此香草Python和线性代数实际上并没有您想象的那样好。 我认为这仅仅是因为Python比"线性代数"具有更高的水平,而且当然不应该期望它成为许多公司现在深陷其中的统计语言。当然,我的df.dropna()示例是非常轻巧的,但可以保证在某些时候与Numpy的紧密集成将使您的生活比以前更加轻松!

Pandas本身

除了Pandas与其他Python软件包的出色集成和方法论之外,Pandas还具有许多好处,它们所做的所有出色的开源工作都提供了这些好处。 每一次转弯,分度,连接,融化,旋转,甚至交叉制表都可以与Pandas一起完成。 这些任务确实可以使用其他程序包提供一整小时的工作,但是使用Pandas可以轻松,即时地完成任务。

借助replace()函数之类的简单工具,可以更轻松地使用Pandas,该工具可用于替换NaN或只是奇怪的数据。 Pandas做了很多工作,做了一点工作,这就是它如此受欢迎和令人印象深刻的原因。 但是Pandas还有其他一些巨大的好处。

字符串访问器

是的,传说是正确的:

数据框是荣耀的字典。

但是,并非所有字典都是一样的。 首先,在我所知道的语言中,熊猫的条件屏蔽是迄今为止最好的。

只需一个简单的步骤,即可对数据进行完全过滤并准备就绪,所有数据都包含在Pandas中,而无需实际运行任何其他方法-因为毕竟这只是一个字典。

Julia也有字典,它们的DataFrames.jl包当然是完全相同的系统,但是在我看来,在这种情况下尝试与Pandas站在一起时,它的外观完全不变。 首先,为了使用布尔型,我们使用filter!()方法。 没问题,它有点优雅,但无论如何都可以正常工作。 但总体而言,在茱莉亚(Julia)词典中,有一个非常重要的问题,我感到惊讶的是,没有涉及太多问题。

Julia的字典命名方案使用符号而不是字符串。 这是非常有问题的,因为在我们所有键盘的基础上都存在着这种邪恶的事物,

空格键。

如您所见,典型的字符串命名方案在Julia中不起作用。 取而代之的是,Julia使用的符号是通过在变量名前加一个冒号而创建的。 因此,让我们尝试使用符号代替:

好的,这行得通,但是如何在空间上做到这一点? 嗯,这是个大问题,如果名称中有空格,则根本无法访问该列。 当然,大多数数据框的列名中都不会包含空格,因为使用_而不是空格被认为更合适,但是如果有的话该怎么办? 朱莉娅唯一有意义的解决方案是打开CSV文件并在其中更改列名称,这是一个大问题。

结论

我爱Pandas

Pandas是一个很棒的软件包,在大多数情况下使Data Science变得轻而易举。 我当然希望DataFrames.jl能够模拟Pandas为Python数据科学社区创建的内容。 Pandas真正的优点在于,围绕它的整个技术堆栈如何与之无缝流动。

Python的世界肯定是一个漂亮的世界。


(本文翻译自Emmett Boudreau的文章《Pandas Makes Python Better》,参考:https://towardsdatascience.com/pandas-makes-python-better-ec6cc1e30233)