相较于 Python 的内置函数, Pandas 库为我们提供了一系列性能更高的数据处理函数,本节将向大家介绍 Pandas 库中的高性能函数 eval
与 query
:
在 Python 中,我们可以用很多种的方法来实现同样的目标,例如实现两个数组的相加:
100 loops, best of 3: 3.39 ms per loop
利用 Numpy 中的 fromiter
函数我们可以得到相同的一维数组,然而我们发现,这个语句的性能并不比内置的数组加法好。
1 loop, best of 3: 266 ms per loop
再比如,进行某一项条件的判断:
Numpy 库中的函数 allclose
用于判断两个数组是否相等,我们可以看到,使用 numexpr 库中的 evaluate
函数同样可以实现 mask 中的条件判断。
True
面对同样的问题,Pandas 库为我们提供了更高性能的解决方案, eval
函数能够将特定形式的字符串转换为对应含义的逻辑判断或运算,比 Python 的内置函数具有更好的算法效率:
10 loops, best of 3: 87.1 ms per loop
10 loops, best of 3: 42.2 ms per loop
True
可以看到,eval 函数实现了等价的计算,并且具有更高的性能。除了加法运算,Pandas 的函数 eval 还能帮助我们实现其他多种复杂的逻辑判断或计算:
以上内容转自 数析学院,更多关于 eval 函数的使用方法以及 query 函数的调用,可以直接查看原文