数据变换

# 数据变换

定义

M.transform.v2(self, data, transforms, drop_null, astype=None,
clip_lower=None, clip_upper=None, except_columns=['date',
'instrument']) 数据变换和处理,支持数据变换、缺失数据处理、数据裁剪和规范化等

参数:

  • data (DataSource) – 输入数据源
  • transforms (函数列表[(正则表达式,变换函数)]) – 变换函数,对于输入数据源的每一列,从transforms里依序寻找到第一个匹配的表达式,用对应的变换函数对列数据做处理
  • drop_null (boolean) – 是否丢弃有缺失数据的行
  • astype (字符串) – 类型转换,支持 ‘int32’, ‘float32’,更多类型
  • clip_lower (数字) – 数值裁剪的下界,value = max(value, clip_lower),None表示不做裁剪
  • clip_upper (数字) – 数值裁剪的上界,value = min(value, clip_upper),None表示不做裁剪
  • except_columns (字符串数组) – 例外的列,对这些列将不做处理

返回:

  • 处理后的数据.data: DataSource, 处理后的数据

返回类型:

  • Outputs

示例代码:

m1 = M.general_feature_extractor.v5(
    instruments=['000001.SZA', '600519.SHA'],
    start_date='2017-01-01', end_date='2017-02-01',
    features=['close_5/close_0', 'close_10/close_0', 'close_20/close_0'])

m2 = M.transform.v2(
    data=m1.data,

    # stockranker 默认的转换函数,主要是将特征映射到非负整数区间,因为stockranker要求输入特征数据为非负整数
    transforms=T.get_stock_ranker_default_transforms(),
    drop_null=True, # 缺失数据处理,如果某一行有空列,则删除
    astype='int32', # 数据类型转换
    except_columns=['date', 'instrument'], # 跳过的列,不需要处理

    # clip最后的数据,保证输入落到如下区间
    clip_lower=0, clip_upper=200000000)

m2.data.read_df().head()

运行结果:

[2018-09-11 20:40:11.763973] INFO: bigquant: general_feature_extractor.v5 开始运行..
[2018-09-11 20:40:13.441633] INFO: general_feature_extractor: year 2017, featurerows=36
[2018-09-11 20:40:13.447219] INFO: general_feature_extractor: total feature rows: 36
[2018-09-11 20:40:13.457178] INFO: bigquant: general_feature_extractor.v5 运行完成[1.693198s].
[2018-09-11 20:40:13.526083] INFO: bigquant: transform.v2 开始运行..
[2018-09-11 20:40:16.804301] INFO: transform: transformed /y_2017, 36/36
[2018-09-11 20:40:16.857257] INFO: transform: transformed rows: 36/36
[2018-09-11 20:40:16.859773] INFO: bigquant: transform.v2 运行完成[3.333713s].
close_0    close_10    close_20    close_5    date    instrument
0    95958    96377    99101    95539    2017-01-03    000001.SZA
1    234358    228334    221308    227297    2017-01-03    600519.SHA
2    95958    95434    99415    95120    2017-01-04    000001.SZA
3    246512    228698    228656    228474    2017-01-04    600519.SHA
4    96063    95958    99310    94910    2017-01-05    000001.SZA