pandas - 使用 numpy 查询数据
问题描述
我已经使用pandas
andsqlite
来执行多个条件搜索dataframe
,例如:
name age height
0 john 18 178
1 jen 25 168
age > 20 & height < 170 & height > 150
我想知道是否numpy
可以做同样的事情,如果可以,它会比pandas
and更快sqlite
吗?
谢谢
解决方案
是的,numpy
可以做同样的事情,而且比pandas
:
df = pd.DataFrame({'name': {0: 'john', 1: 'jen'},
'age': {0: 18, 1: 25},
'height': {0: 178, 1: 168}})
print((df['age'] > 20) & (df['height'] < 170) & (df['height'] > 150))
0 False
1 True
dtype: bool
m = df.values.T # Note the transposition
print((m[1] > 20) & (m[2] < 170) & (m[2] > 150))
array([False, True])
表现
>>> %timeit (df['age'] > 20) & (df['height'] < 170) & (df['height'] > 150)
392 µs ± 1.87 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
>>> %timeit (m[1] > 20) & (m[2] < 170) & (m[2] > 150)
6.69 µs ± 12.1 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)