时间:2021-05-22
Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
相较于 Python 的内置函数, Pandas 库为我们提供了一系列性能更高的数据处理函数,本节将向大家介绍 Pandas 库中的高性能函数 eval 与 query:
在 Python 中,我们可以用很多种的方法来实现同样的目标,例如实现两个数组的相加:
import numpy as np rng = np.random.RandomState(42) x = rng.rand(1E6) y = rng.rand(1E6) %timeit x + y 100 loops, best of 3: 3.39 ms per loop利用 Numpy 中的 fromiter 函数我们可以得到相同的一维数组,然而我们发现,这个语句的性能并不比内置的数组加法好。
再比如,进行某一项条件的判断:
mask = (x > 0.5) & (y < 0.5) tmp1 = (x > 0.5) tmp2 = (y < 0.5) mask = tmp1 & tmp2Numpy 库中的函数 allclose 用于判断两个数组是否相等,我们可以看到,使用 numexpr 库中的 evaluate 函数同样可以实现 mask 中的条件判断。
面对同样的问题,Pandas 库为我们提供了更高性能的解决方案, eval 函数能够将特定形式的字符串转换为对应含义的逻辑判断或运算,比 Python 的内置函数具有更好的算法效率:
import pandas as pd nrows, ncols = 100000, 100 rng = np.random.RandomState(42) df1, df2, df3, df4 = (pd.DataFrame(rng.rand(nrows, ncols)) for i in range(4)) %timeit df1 + df2 + df3 + df4 10 loops, best of 3: 87.1 ms per loop %timeit pd.eval('df1 + df2 + df3 + df4') 10 loops, best of 3: 42.2 ms per loop np.allclose(df1 + df2 + df3 + df4, pd.eval('df1 + df2 + df3 + df4')) True可以看到,eval 函数实现了等价的计算,并且具有更高的性能。除了加法运算,Pandas 的函数 eval 还能帮助我们实现其他多种复杂的逻辑判断或计算:
总结
以上就是本文关于Pandas探索之高性能函数eval和query解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python探索之URL Dispatcher实例详解、Python编程之Re模块下的函数介绍等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
query()函数简介pandas的query()方法是基于DataFrame列的计算代数式,对于按照某列的规则进行过滤的操作,可以使用query方法。代码示例
python中eval和int的区别是什么?下面给大家介绍一下:1.eval()函数eval()能够以Python表达式的方式解析并执行字符串,并将返回结果输出
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:1.一种为使用eval()函数。2.使用Function对象来进行返回解析。使用eval函数来
pandas模块pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能
1.lxml库介绍lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的数据;lxml和正则一样,也是用C语言实现的,是一款高性能的py