【Pandas驯化-16】一文搞懂Pandas中高性能query、eval函数技巧

【Pandas驯化-16】一文搞懂Pandas中高性能query、eval函数技巧
 
本次修炼方法请往下查看
在这里插入图片描述

🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 相关内容文档获取 微信公众号
🎇 相关内容视频讲解 B站

🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验

🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


下滑查看解决方法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  

🎯 1. 基本介绍

  pandas进行列的查询,经常会常使用df[条件]的方式,但是这种写法的性能不是很高, pandas基于Numexpr实现了两个高性能的函数,用于数据查询过滤query()和数据列值修改与增加新列eval(),这两个函数通过传入列名str的方式进行操作::
  Pandas 提供了 query 和 eval 函数,这两个函数在处理数据时非常有用。query 函数允许你用字符串表达式来筛选数据,而 eval 函数可以计算字符串表达式的值。这两个函数可以大大简化数据处理的代码。

💡 2. 使用方法

2.1 pd.query函数使用

  query()函数是Pandas中用于根据条件筛选数据的函数。它可以基于一定的表达式筛选出符合条件的数据行。

  • 函数语法如下,参数说明:
  • expr:表示条件的字符串表达式。
  • inplace:是否对原始DataFrame进行就地修改,默认为False,即返回一个新的DataFrame。
import pandas as pd

# 创建示例数据
data = {'A': [1, 2, 3, 4, 5],
        'B': [6, 7, 8, 9, 10]}
df = pd.DataFrame(data)

# 根据条件筛选数据
filtered_df = df.query('A > 2 and B < 9')
print(filtered_df)

A  B
2  3  8

2.2 pd.eval函数使用

  eval()函数是Pandas中用于执行一些计算或表达式的函数。它可以基于字符串表达式进行快速的计算和转换。函数语法如下:

  • 参数说明:
  • expr:表示计算或表达式的字符串。
  • inplace:是否对原始DataFrame进行就地修改,默认为False,即返回一个新的DataFrame。
import pandas as pd

# 创建示例数据
data = {'A': [1, 2, 3, 4, 5],
        'B': [6, 7, 8, 9, 10]}
df = pd.DataFrame(data)

# 使用eval()函数计算新列
df.eval('C = A + B', inplace=True)
print(df)

A   B   C
0  1   6   7
1  2   7   9
2  3   8  11
3  4   9  13
4  5  10  15

🔍 3. 注意事项

  对上述的各个函数在使用的过程中需要注意的一些事项,不然可能会出现error,具体主要为:

  • query 函数使用的条件字符串应当是有效的 Python 表达式,并且可以包含Pandas的向量化函数。
  • eval 函数可以执行更复杂的表达式,但需要小心使用,因为它会执行字符串中的代码,可能会引起安全问题。
  • 在使用 eval 时,如果表达式中包含的列有 NaN 值,结果可能也会包含 NaN。
  • 从性能角度来看,query 方法通常比使用 eval 更快,特别是在处理大型数据集时。

🔧 4. 总结

  本文介绍了 Pandas 中的 query 和 eval 函数的使用方法。query 函数允许你通过字符串表达式来筛选数据,而 eval 函数可以执行字符串表达式并返回计算结果。通过实际的代码示例和输出结果,我们可以看到这些函数如何简化数据处理过程。希望这篇博客能够帮助你更好地理解并应用这些功能。

  • 31
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只红花猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值