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