本篇内容介绍了“怎么将Pandas迭代速度加快150倍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
做一个数据集
把观点论述清楚最简单的方法是声明一个单列数据框对象,其整数值范围为1到100000:
真的不需要任何更为复杂的东西来解决Pandas的速度问题。为验证一切进展顺利,以下是数据集的前几行和整体形状:
好了,准备工作已做足,现在一起看看如何遍历以及如何不遍历数据框的行。首先介绍如何不进行选择。
以下是你不应该做的事
啊,笔者一直在使用(和过度使用)如此多的iterrows()方法。它在默认情况下速度很慢,但你知道笔者费心去寻找替代方案的原因(目光短浅)。
为证明你不该使用iterrows()方法在数据框中进行遍历,笔者会做个快速演示——声明一个变量并将其初始设置为0——然后在每次迭代时按Values属性的当前值进行递增。
如果你想知道%%time魔法函数返回单元格完成所有操作所需的秒数/毫秒数。
一起看看该函数是如何运行的:
你现在可能会想,用15秒遍历100000行并递增一些外部变量的值并不算多。但事实上是——请看下一部分的阐述原因。
以下是你应该做的事
现在有一个神奇的方法能进行挽救——itertuples()。顾名思义,itertuples()循环遍历数据框的行,然后返回一个命名元组。这就是不能用括号[]访问这些值,而是需要使用.符号的原因。
现在将演示与几分钟前相同的示例,但使用的是itertuples()方法:
瞧瞧!使用itertuples()进行同样的运算,速度快了约154倍!现在想象一下你的日常工作场景,你正在处理上百万条行——itertuples()可以帮你节省大量时间。
在这个简单的例子中,我们已经见识到对代码进行的小小改动就能对整体结果产生的巨大影响。
这不意味itertuples()在每个场景下都会比iterrows()快150倍,但在某种程度上这确实意味着每次都会快一些。
“怎么将Pandas迭代速度加快150倍”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/209339.html