evaluate函数在python_Pandas探索之高性能函数eval和query解析
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 函数我们可以得到相同的一维数组,然而我们发现,这个语句的性能并不比内置的数组加法好。
%timeit np.fromiter((xi + yi for xi, yi in zip(x, y)),
dtype=x.dtype, count=len(x))
1 loop, best of 3: 266 ms per loop
再比如,进行某一项条件的判断:
mask = (x > 0.5) & (y < 0.5)
tmp1 = (x > 0.5)
tmp2 = (y < 0.5)
mask = tmp1 & tmp2
Numpy 库中的函数 allclose 用于判断两个数组是否相等,我们可以看到,使用 numexpr 库中的 evaluate 函数同样可以实现 mask 中的条件判断。
import numexpr
mask_numexpr = numexpr.evaluate('(x > 0.5) & (y < 0.5)')
np.allclose(mask, mask_numexpr)
True
面对同样的问题,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模块下的函数介绍等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
本文标题: Pandas探索之高性能函数eval和query解析
本文地址: http://www.cppcns.com/jiaoben/python/209254.html
evaluate函数在python_Pandas探索之高性能函数eval和query解析相关推荐
- python中query函数-Pandas探索之高性能函数eval和query解析
Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高 ...
- [译]Effective Kotlin系列之探索高阶函数中inline修饰符(三)
简述: 不知道是否有小伙伴还记得我们之前的Effective Kotlin翻译系列,之前一直忙于赶时髦研究Kotlin 1.3中的新特性.把此系列耽搁了,赶完时髦了还是得踏实探究本质和基础,从今天开始 ...
- 探索C++虚函数在g++中的实现
本文是我在追查一个诡异core问题的过程中收获的一点心得,把公司项目相关的背景和特定条件去掉后,仅取其中通用的C++虚函数实现部分知识记录于此. 在开始之前,原谅我先借用一张图黑一下C++: &quo ...
- Cpp 对象模型探索 / 类静态成员函数的调用方式
一.普通静态成员函数的调用方法 栗子: class CA { public:static void func() {} };int main() {CA A;A.func();CA::func();r ...
- 探索Julia(part12)--函数组合及管道
学习笔记,仅供参考,有错必纠 参考自:Julia数据科学应用–Zacharias Voulgaris:官方文档 使用Julia-1.1.1 函数组合及管道 函数组合 Julia中的函数可以通过组合或连 ...
- 寻路优化(一)——二维地图上A*启发函数的设计探索
工作中需要优化A*算法,研究了一天,最后取得了不错的效果.看网上的朋友还没有相关的研究,特此记录一下.有错误欢迎大家批评指正.如需转载请注明出处,http://www.cnblogs.com/Leon ...
- 中计算散度的函数_荷畔微风 - 在函数计算FunctionCompute中使用WebAssembly
WebAssembly 是一种新的W3C规范,无需插件可以在所有现代浏览器中实现近乎原生代码的性能.同时由于 WebAssembly 运行在轻量级的沙箱虚拟机上,在安全.可移植性上比原生进程更加具备优 ...
- string.h包含哪些函数_Excel进行数据分析常用方法及函数汇总—【杏花开生物医药统计】...
Excel是数据分析工作中经常使用的一种工具,经常包含着大量的原始数据,它功能十分强大,除了能录入.整理数据之外,还能进行一些常规的基础的数据分析,那么这里面就需要用到很多函数,今天就来给大家介绍一些 ...
- python nums函数_Python中的内置函数
Python中有很多内置函数,不需要我们调用模块可以直接使用,而且都是常用函数的封装,下面我们来看看Python中的内置函数都有那些. 1.abs() abs()是绝对值函数,把一个负数转化为正数,数 ...
最新文章
- 自己做的一个小程序 可采集、导出、模板、配置
- Google 的 QUIC 华丽转身成为下一代网络协议: HTTP/3.0
- 来个“云”毕业典礼,这些装扮太硬核了!
- C# 数组增加元素_C#的集合类型及使用技巧
- 无序列表圆点变空心_前端HTML -- 列表标签
- Verilog实现独立按键消抖(状态机)
- LAMP兄弟连网络基础视频地址全集!!!
- 网站会员扫码充值系统
- Modscan和Modsim 两种Modbus调试工具使用说明
- php读取excel写入数据库,PHP读取EXCEL文件写入数据库
- 如何编写一个Makefile文件(手把手的教你)
- 11、C++各大有名库的介绍——综合
- aspcms首页content内容html代码过滤,ASPCMS用百度编辑器JS/html代码(script标签)被过滤的解决办法...
- 布莱叶盲文-谷歌生态
- html组态插件_BY组态 插件 web组态 插件 物联网组态 插件
- 联想thinkbook14+2023款和2022款区别对比评测
- 中集集团全球港航AI高科技独角兽中集飞瞳港口航运新枢纽人工智能技术走向成熟全球前三大船公司及港口码头应用落地港口智能化码头智能化
- 仓库拣货标签——流程卡
- Markov Models - 马尔可夫模型
- 各大互联网公司技术博客汇总
热门文章
- 使用Beanstalk搭建队列服务
- 北大团队推出“职场神器”ChatExcel!表格用户不再需要记公式---转自百度新闻|北晚在线
- android 系统卡顿分析,Android-卡顿分析
- 微信服务号的6大价值有哪些?
- [C#错误]未找到类型或命名空间名称 (是否缺少 using 指令或程序集引用?)
- 华大HC32F460时钟简介
- 加密借贷公司 BlockFi 将支付 1 亿美元与美国 SEC 及各州达成和解
- HTML5 Canvas 制作一个“在线画板”
- 论文阅读 # Event Detection with Trigger-Aware Lattice Neural Network
- 7-15 重复数据问题-hebust (10 分)