M.filter¶
定义¶
-
M.filter.
v3
(self, input_data, expr, output_left_data=False)¶ 过滤DataSource (数据类型为 DataFrame)
参数: - input_data (DataSource) – 输入数据。
- expr (字符串) – 过滤表达式, 参考 示例代码 和 DataFrame.query,包含特使字符的列名需要使用反单引号(`)引起来,例如 close_10/close0 > 0.91。
- output_left_data (bool) – 输出剩余数据;默认值是False。
返回: - .data: 输出数据
- .left_data: 剩余数据
返回类型: Outputs
示例代码¶
查看模块可用版本¶
In [1]:
M.filter.m_get_version
Out[1]:
<bound method BigQuantModule.m_get_version of 模块:filter
可用版本(推荐使用最新版本):v3, v2>
数据过滤¶
In [2]:
def gen_history_data(instruments, start_date, end_date):
df = D.history_data(instruments, start_date, end_date, ['close', 'open'])
return Outputs(data = DataSource.write_df(df))
m1 = M.cached.v3(run=gen_history_data, kwargs={
'instruments': ['000001.SZA', '600000.SHA'],
'start_date': '2017-05-01',
'end_date': '2017-05-20'
})
[2017-11-14 14:28:46.056071] INFO: bigquant: cached.v3 开始运行..
[2017-11-14 14:28:46.088251] INFO: bigquant: cached.v3 运行完成[0.032212s].
In [4]:
# 按时间过滤
m2 = M.filter.v3(input_data=m1.data, expr='"2017-05-08" < date < "2017-05-10"')
m2.data.read_df().head()
[2017-11-14 14:29:35.818097] INFO: bigquant: filter.v3 开始运行..
[2017-11-14 14:29:35.854749] INFO: filter: 使用表达式 "2017-05-08" < date < "2017-05-10" 过滤
[2017-11-14 14:29:35.898431] INFO: filter: 过滤 /data, 2/28
[2017-11-14 14:29:35.905173] INFO: bigquant: filter.v3 运行完成[0.087078s].
Out[4]:
date | close | instrument | open | |
---|---|---|---|---|
10 | 2017-05-09 | 905.111328 | 000001.SZA | 896.730652 |
11 | 2017-05-09 | 136.787201 | 600000.SHA | 136.138489 |
In [5]:
# 按价格过滤
m3 = M.filter.v3(input_data=m1.data, expr='open > 110 and close < 600')
m3.data.read_df().head()
[2017-11-14 14:30:02.950575] INFO: bigquant: filter.v3 开始运行..
[2017-11-14 14:30:02.955226] INFO: filter: 使用表达式 open > 110 and close < 600 过滤
[2017-11-14 14:30:02.982376] INFO: filter: 过滤 /data, 14/28
[2017-11-14 14:30:02.986847] INFO: bigquant: filter.v3 运行完成[0.036315s].
Out[5]:
date | close | instrument | open | |
---|---|---|---|---|
1 | 2017-05-02 | 140.494171 | 600000.SHA | 140.957550 |
3 | 2017-05-03 | 139.752777 | 600000.SHA | 140.494171 |
5 | 2017-05-04 | 138.826035 | 600000.SHA | 139.660110 |
7 | 2017-05-05 | 138.269989 | 600000.SHA | 138.548019 |
9 | 2017-05-08 | 137.713943 | 600000.SHA | 136.972549 |