2017-02-22 94 views
1

給出一個包含有一個熊貓HDFStore之間差異DataFrame熊貓HDFStore:使用選擇功能,可直接進入

import pandas as pd 
import numpy.random as rd 

df = pd.DataFrame(rd.randn(int(1000)).reshape(500, 2), columns=list('ab')) 
store = pd.HDFStore('store.h5') 
store.append('df', df, data_columns=['a', 'b']) 

我可以使用select函數來檢索數據的子集,像這樣:

store.select('df', ['a > 0', 'b > 0']) 

不過,我可以回落到那種命令的,如果我是使用純DataFrame,這不是在HDFStore我可能會用得到的結果相同:

store.df[(store.df.a > 0) & (store.df.b > 0)] 

這兩種方法有區別嗎?如果是這樣,有什麼區別?

回答

1

如果你運行一些基準測試中,你會發現下面的

%timeit store.select('df', ['a > 0', 'b > 0']) 
100 loops, best of 3: 2.63 ms per loop 
%timeit store.df[(store.df.a > 0) & (store.df.b > 0)] 
100 loops, best of 3: 6.01 ms per loop 

這表明第一選擇訪問文件的次數更少比第二種方法。 具體每個以下

%timeit store.df.a > 0 
100 loops, best of 3: 1.84 ms per loop 
%timeit store.df.b > 0 
1000 loops, best of 3: 1.82 ms per loop 

的花費大約爲2ms,那麼你就需要根據邏輯都和選擇。只有,那麼你需要應用最終的過濾器。 選擇而不是訪問數據只有一次!