# convert series to supervised learning
def series_to_supervised(data, n_in=1, n_out=1, dropnan=False):
#data,全部列参与数据复制处理
#n_in,dataframe的复制次数,历史周期的个数。如果n_in=0,不加入历史周期的数据。
#n_out,dataframe的复制次数,未来周期(含当前期)的个数.如果n_out=0,不加入当前期和未来周期的数据。
#默认nan不做删除
#产出,dataframe的未来n_out和历史n_in期的数据集合。
n_vars = 1 if type(data) is list else data.shape[1] #样本data的列数
df = pd.DataFrame(data) #样本data
cols, names = list(), list()
# input sequence (t-n, ... t-1)
for i in range(n_in, 0, -1):
cols.append(df.shift(i)) #shift(i),datafame向下顺移i位,前i列为nan
names += [('%s(t-%d)' % (data.columns[j], i)) for j in range(n_vars)] #j+1,data的x列
# forecast sequence (t, t+1, ... t+n)
for i in range(0, n_out):
cols.append(df.shift(-i)) #shift(-i),datafrate向上顺移i位,后i列为nan
if i == 0:
names += [('%s(t)' % (data.columns[j])) for j in range(n_vars)]
else:
names += [('%s(t+%d)' % (data.columns[j], i)) for j in range(n_vars)]
# put it all together
agg = pd.concat(cols, axis=1) #axis=1,0轴垂直往下,1轴向右水平延伸
agg.columns = names
# drop rows with NaN values
if dropnan:
agg.dropna(inplace=True) #默认how='any',有任何nan就删除
return agg
df_ths_daily_all = df_ths_daily_all[['TS指数代码','指数名称','交易日','收盘点位','震荡类型_05','震荡类型_11','震荡类型_23','环比_05_r','环比_11_r','环比_23_r']]
df_ths_daily_all_c1 = df_ths_daily_all[df_ths_daily_all['TS指数代码']=='861001.TI']
series_to_supervised(df_ths_daily_all_c1, n_in=3, n_out=1, dropnan=False)
tushare每日a股
于 2023-04-23 07:19:51 首次发布
该函数将时间序列数据转换为适合监督学习的格式。通过指定历史周期(n_in)和未来预测周期(n_out),它创建一个包含过去和未来值的数据集。此过程涉及到PandasDataFrame的shift操作,用于移动列并处理NaN值。示例应用展示了如何将特定指数数据转换为监督学习输入。
3501

被折叠的 条评论
为什么被折叠?



