熊猫query()过滤性能

时间:2019-05-03 17:40:08

标签: pandas

我已经读过https://jakevdp.github.io/PythonDataScienceHandbook/03.12-performance-eval-and-query.html,使用query()进行数据帧过滤比仅使用带有'&'的条件过滤数据要快。当然,可以使用query()时有一些限制。但是我在一个数据帧上尝试过它,但实际上执行起来明显慢得多。为什么呢?我想念什么?什么时候应该使用query()?参见下文:

import pandas as pd

import numpy as np

#create dataframe with 5 columns using random numbers 

rng = np.random.RandomState(42)

df = pd.DataFrame(rng.rand(1000, 5), columns=['A', 'B', 'C', 'D','E'])

df2= round((df * 10),1)

%timeit df3 = df2[(df2["A"] < 3) & (df2["B"]>2)]

%timeit df4 = df2.query("A<3 and B>2") 

对于df3,我得到:每个循环1.06 ms±156 µs(平均±标准偏差,共运行7次,每个循环1000次)

对于df4:每个循环1.97 ms±155 µs(平均±标准偏差,共运行7次,每个循环1000次)

如您所见,df4花费了几乎两倍的时间。为什么???使用query()是否有限制?我发现query()语法更简洁易用,我希望默认使用它。

我正在使用Pandas 0.24.2

0 个答案:

没有答案