数据过滤

# 数据过滤

# 按时间过滤

定义

M.filter.v3(input_data, expr, output_left_data=False)

过滤DataSource (数据类型为 DataFrame)

参数:

  • input_data (DataSource) – 输入数据。
  • expr (字符串) – 过滤表达式, 参考 示例代码 和 DataFrame.query,包含特使字符的列名需要使用反单引号(`)引起来。
  • output_left_data (bool) – 输出剩余数据;默认值是False。

返回:

  • .data: 输出数据
  • .left_data: 剩余数据

返回类型:

  • Outputs

示例代码

def gen_history_data(instruments, start_date, end_date, fields):
    table_name = 'bar1d_CN_STOCK_A'
    df = DataSource(table_name).read(instruments=instruments,start_date=start_date,end_date=end_date,fields=fields)
    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',
    'fields':['close']
 }, m_deps=np.random.rand())

 # 按时间过滤   
m2 = M.filter.v3(input_data=m1.data,expr='"2017-05-08" < date <"2017-05-10"')
m2.data.read_df().head()

运行结果:

[2018-09-11 20:40:09.409311] INFO: bigquant: cached.v3 开始运行..
[2018-09-11 20:40:10.947687] INFO: bigquant: cached.v3 运行完成[1.538368s].
[2018-09-11 20:40:10.961836] INFO: bigquant: filter.v3 开始运行..
[2018-09-11 20:40:10.968812] INFO: filter: 使用表达式 "2017-05-08" < date < "2017-05-10" 过滤
[2018-09-11 20:40:11.220010] INFO: filter: 过滤 /data, 2/28
[2018-09-11 20:40:11.226092] INFO: bigquant: filter.v3 运行完成[0.264246s].
date    Instrument    close
258228    2017-05-09    600000.SHA    136.787201
259319    2017-05-09    000001.SZA    905.111328

# 按价格过滤

定义

M.filter.v3(input_data, expr, output_left_data=False)

过滤DataSource (数据类型为 DataFrame)

参数:

  • input_data (DataSource) – 输入数据。
  • expr (字符串) – 过滤表达式, 参考 示例代码 和 DataFrame.query,包含特使字符的列名需要使用反单引号(`)引起来。
  • output_left_data (bool) – 输出剩余数据;默认值是False。

返回:

  • .data: 输出数据
  • .left_data: 剩余数据

返回类型:

  • Outputs

示例代码

def gen_history_data(instruments, start_date, end_date, fields):
    table_name = 'bar1d_CN_STOCK_A'
    df = DataSource(table_name).read(instruments=instruments,start_date=start_date,end_date=end_date,fields=fields)
    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',
    'fields':['close']
 }, m_deps=np.random.rand())

 # 按价格过滤
m3 = M.filter.v3(input_data=m1.data, expr='close > 900 and close < 950')
m3.data.read_df().head()

运行结果:

[2018-09-11 20:40:11.280931] INFO: bigquant: filter.v3 开始运行..
[2018-09-11 20:40:11.302720] INFO: filter: 使用表达式 close > 900 and close < 950 过滤
[2018-09-11 20:40:11.346106] INFO: filter: 过滤 /data, 13/28
[2018-09-11 20:40:11.352130] INFO: bigquant: filter.v3 运行完成[0.07121s].
date    instrument    close
242482    2017-05-02    000001.SZA    936.538757
245565    2017-05-03    000001.SZA    933.396057
247526    2017-05-04    000001.SZA    915.587158
251526    2017-05-05    000001.SZA    904.063721
259319    2017-05-09    000001.SZA    905.111328

# A股股票过滤 chinaa_stock_filter

(可视化模块)
定义

M.chinaa_stock_filter.v1 ( index_constituent_cond=list,board_cond=list,industry_cond=list,st_cond=list,output_left_data=False)

参数

  • index_constituent_cond(list)—股票类别(可以多选), 全部、上证50、沪深300、中证500、中证800、上证180、中证100、深证100
  • board_cond(list)— 上市板(可以多选), 全部、上证主板、深证主板、创业板
  • industry_cond(list)— 行业(可以多选), 全部、交通运输等申万一级行业
  • st_cond(list)—ST状态(可以多选),正常、ST、*ST、暂停上市
  • output_left_data (Bool) —输出剩余数据,默认不输出

返回

满足选定范围要求的股票

返回类型

OutPuts