「Python数据分析」Pandas基础,数据选择重量级:query()方法

我们在利用布尔索引,进行数据选择的时候,需要深入理解逻辑操作符,也就是与或非操作。特别是布尔索引对行索引的处理,往往过于冗长和复杂,还需要注意行索引下标的起始位置。这对于非计算机专业的数据分析人员来说,相对于不太友好。

针对以上问题,本篇文章详细介绍一个数据选择的重量级方法,也就是query()方法。通过query()方法对数据进行查询,可以提高查询速度和效率,还可以让查询的代码更加清晰和简便。这对于非计算机专业的数据分析人员来说,是一个不错的数据查询方法。

先看一个布尔索引或操作的query()方法实现方式

生成原始数据集

这里分别用纯净的python查询方法和query方法进行对比

从上图中的查询代码,以及查询结果可以看到,实现同样的查询过程,用query方法的话,代码更加清晰,而且复杂度大大降低,让人容易理解。

我们甚至可以把和操作符&,换成英文and表示

还可以去掉小括号,进一步优化代码,让查询代码更加简洁

in 和 not in 操作符的 query 方法替代

这里,我们重新生成一个数据集

先来看in操作的query方法

这里的in操作符,表示的是包含的意思,也就是a列的值,在b列中出现的数据行。

我们可以从原始数据集看到,a列有a,b,c,d,e,f这几个数据值,b列有a,b,c三个不重复的数据值。那么,a列在b列中出现的数据值,就是a,b,c三个,包含重复值。

用纯净的python语句查询的话,是下面这样的

再来看看not in操作的query方法实现方式

query方法的组合查询方式

我们可以把in和not in操作,以及布尔操作组合起来,通过query方法来实现

通过list对象实现的==和!=操作符的query实现方式

==操作符等同于in操作符

代码的含义是,选择b列中的数值,同时在a,b,c三列中都出现过的数据。我们可以看出,b列中的a,b,c三个值,在a列中全部出现过,所以等同于选择全部数据。

纯净的python查询语句,是下面这样的

query方法的性能

我们再来看看query方法,和纯净的python查询语句相比,性能如何?

从上图可以看出,绿色的曲线,代表纯净的python查询语句的执行速度。橘红色的曲线,代表的是query方法的执行速度。

在不超过100,000行数据的情况下,query方法稍微慢一些,需要的时间更多。但是,超过100,000行数据的情况下,query方法的查询速度,就优于纯净的python查询语句了。

总结

query方法的语句,要比python的查询语句,更加简单易懂。对于非计算机专业的数据分析人员来说,可以用query方法,替代布尔索引,还有逻辑的与或非操作,以及in和not in操作。

在执行速度方面,100,000行数据是query方法和python查询语句的分界线。小于100,000行数据的情况下,python查询语句稍微快一些。大于100,000行数据的情况下,query方法要优于python查询语句。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

奕澄羽邦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值