normalize_ts_feature
- czsc.normalize_ts_feature(df, x_col, n=10, **kwargs)[source]
对时间序列数据进行归一化处理
函数计算逻辑:
首先,进行一系列的断言检查,确保因子值的取值数量大于分层数量,并且因子列没有缺失值。
从kwargs参数中获取分层方法method的值,默认为”expanding”,以及min_periods的值,默认为300。
- 如果在DataFrame的列中不存在x_col_norm列,则进行以下操作:
如果分层方法是”expanding”,则使用expanding函数对因子列进行处理,计算每个时间点的标准化值,公式为(当前值 - 平均值) / 标准差。
如果分层方法是”rolling”,则使用rolling函数对因子列进行处理,计算每个窗口的标准化值,窗口大小为min_periods,公式同上。
如果分层方法不是上述两种情况,则抛出错误。
对于缺失值,获取原始值,然后进行标准化。
- 如果在DataFrame的列中不存在x_col_qcut列,则进行以下操作:
如果分层方法是”expanding”,则使用expanding函数对因子列进行处理,计算每个时间点的分位数,将其转化为分位数的标签(0到n-1)。
如果分层方法是”rolling”,则使用rolling函数对因子列进行处理,计算每个窗口的分位数,窗口大小为min_periods。
如果分层方法不是上述两种情况,则抛出错误。
使用分位数后的值填充原始值中的缺失值。
对于缺失值,获取原始值,然后进行分位数处理分层。
创建一个新的列x_col分层,根据分位数的标签值,将其转化为”第xx层”的字符串形式。
- Parameters:
df – 因子数据,必须包含 dt, x_col 列,其中 dt 为日期,x_col 为因子值,数据样例:
x_col – 因子列名
n – 分层数量,默认为10
kwargs –
method: 分层方法,expanding 或 rolling,默认为 expanding
min_periods: expanding 时的最小样本数量,默认为300
- Returns:
df, 添加了 x_col_norm, x_col_qcut, x_col分层 列