|
1 |
| -from .pandas_vb_common import * |
| 1 | +import numpy as np |
2 | 2 | import pandas as pd
|
3 | 3 | try:
|
4 | 4 | import pandas.core.computation.expressions as expr
|
|
7 | 7 |
|
8 | 8 |
|
9 | 9 | class Eval(object):
|
| 10 | + |
10 | 11 | goal_time = 0.2
|
11 | 12 |
|
12 | 13 | params = [['numexpr', 'python'], [1, 'all']]
|
13 | 14 | param_names = ['engine', 'threads']
|
14 | 15 |
|
15 | 16 | def setup(self, engine, threads):
|
16 |
| - self.df = DataFrame(np.random.randn(20000, 100)) |
17 |
| - self.df2 = DataFrame(np.random.randn(20000, 100)) |
18 |
| - self.df3 = DataFrame(np.random.randn(20000, 100)) |
19 |
| - self.df4 = DataFrame(np.random.randn(20000, 100)) |
| 17 | + np.random.seed(1234) |
| 18 | + self.df = pd.DataFrame(np.random.randn(20000, 100)) |
| 19 | + self.df2 = pd.DataFrame(np.random.randn(20000, 100)) |
| 20 | + self.df3 = pd.DataFrame(np.random.randn(20000, 100)) |
| 21 | + self.df4 = pd.DataFrame(np.random.randn(20000, 100)) |
20 | 22 |
|
21 | 23 | if threads == 1:
|
22 | 24 | expr.set_numexpr_threads(1)
|
23 | 25 |
|
24 | 26 | def time_add(self, engine, threads):
|
25 |
| - df, df2, df3, df4 = self.df, self.df2, self.df3, self.df4 |
26 |
| - pd.eval('df + df2 + df3 + df4', engine=engine) |
| 27 | + pd.eval('self.df + self.df2 + self.df3 + self.df4', engine=engine) |
27 | 28 |
|
28 | 29 | def time_and(self, engine, threads):
|
29 |
| - df, df2, df3, df4 = self.df, self.df2, self.df3, self.df4 |
30 |
| - pd.eval('(df > 0) & (df2 > 0) & (df3 > 0) & (df4 > 0)', engine=engine) |
| 30 | + pd.eval('(self.df > 0) & (self.df2 > 0) & ' |
| 31 | + '(self.df3 > 0) & (self.df4 > 0)', engine=engine) |
31 | 32 |
|
32 | 33 | def time_chained_cmp(self, engine, threads):
|
33 |
| - df, df2, df3, df4 = self.df, self.df2, self.df3, self.df4 |
34 |
| - pd.eval('df < df2 < df3 < df4', engine=engine) |
| 34 | + pd.eval('self.df < self.df2 < self.df3 < self.df4', engine=engine) |
35 | 35 |
|
36 | 36 | def time_mult(self, engine, threads):
|
37 |
| - df, df2, df3, df4 = self.df, self.df2, self.df3, self.df4 |
38 |
| - pd.eval('df * df2 * df3 * df4', engine=engine) |
| 37 | + pd.eval('self.df * self.df2 * self.df3 * self.df4', engine=engine) |
39 | 38 |
|
40 | 39 | def teardown(self, engine, threads):
|
41 | 40 | expr.set_numexpr_threads()
|
42 | 41 |
|
43 | 42 |
|
44 | 43 | class Query(object):
|
| 44 | + |
45 | 45 | goal_time = 0.2
|
46 | 46 |
|
47 | 47 | def setup(self):
|
48 |
| - self.N = 1000000 |
49 |
| - self.halfway = ((self.N // 2) - 1) |
50 |
| - self.index = date_range('20010101', periods=self.N, freq='T') |
51 |
| - self.s = Series(self.index) |
| 48 | + np.random.seed(1234) |
| 49 | + self.N = 10**6 |
| 50 | + self.halfway = (self.N // 2) - 1 |
| 51 | + self.index = pd.date_range('20010101', periods=self.N, freq='T') |
| 52 | + self.s = pd.Series(self.index) |
52 | 53 | self.ts = self.s.iloc[self.halfway]
|
53 |
| - self.df = DataFrame({'a': np.random.randn(self.N), }, index=self.index) |
54 |
| - self.df2 = DataFrame({'dates': self.s.values,}) |
55 |
| - |
56 |
| - self.df3 = DataFrame({'a': np.random.randn(self.N),}) |
57 |
| - self.min_val = self.df3['a'].min() |
58 |
| - self.max_val = self.df3['a'].max() |
| 54 | + self.df = pd.DataFrame({'a': np.random.randn(self.N), 'dates': self.s}, |
| 55 | + index=self.index) |
| 56 | + self.data = np.random.randn(self.N) |
| 57 | + self.min_val = self.data.min() |
| 58 | + self.max_val = self.data.max() |
59 | 59 |
|
60 | 60 | def time_query_datetime_index(self):
|
61 |
| - ts = self.ts |
62 |
| - self.df.query('index < @ts') |
| 61 | + self.df.query('index < @self.ts') |
63 | 62 |
|
64 |
| - def time_query_datetime_series(self): |
65 |
| - ts = self.ts |
66 |
| - self.df2.query('dates < @ts') |
| 63 | + def time_query_datetime_column(self): |
| 64 | + self.df.query('dates < @self.ts') |
67 | 65 |
|
68 | 66 | def time_query_with_boolean_selection(self):
|
69 |
| - min_val, max_val = self.min_val, self.max_val |
70 |
| - self.df.query('(a >= @min_val) & (a <= @max_val)') |
| 67 | + self.df.query('(a >= @self.min_val) & (a <= @self.max_val)') |
0 commit comments