如何将ftse_change Dataframe转换为时间序列数组适配ML模型
DataFrame转时间序列(ts)格式:差异说明+转换方法
核心差异说明
- DataFrame:二维表格结构,可容纳多列无关数据,索引类型无强制要求,侧重数据的结构化存储
- 时间序列(ts):一维/多变量的有序数据,核心是时间索引的连续性与有序性,数据严格按时间顺序排列,专门适配时间序列分析或时序机器学习模型
转换步骤(分场景)
场景1:转pandas内置时间序列(最通用)
大部分时间序列库(pandas、statsmodels、Prophet等)都兼容这种格式,本质是带DatetimeIndex的pandas Series:
import pandas as pd # 1. 确保时间列是datetime类型(假设你的DataFrame有一列叫date) df['date'] = pd.to_datetime(df['date']) # 2. 设置时间列为索引,提取目标时间序列列 ts = df.set_index('date')['ftse_change'] # 验证格式:索引必须是DatetimeIndex print(type(ts.index)) # 输出 <class 'pandas.core.indexes.datetimes.DatetimeIndex'>
场景2:适配statsmodels时间序列模型
statsmodels原生支持pandas时间序列格式,无需额外转换,直接传入即可:
import statsmodels.api as sm # 用pandas Series直接初始化ARIMA模型 model = sm.tsa.ARIMA(ts, order=(1,1,1)) results = model.fit()
场景3:适配普通机器学习模型(如scikit-learn)
普通ML模型需要把时序数据转为监督学习格式(特征矩阵+标签),需构造滑动窗口:
import numpy as np def create_sliding_window(data, seq_len): X, y = [], [] for i in range(len(data) - seq_len): # 用过去seq_len个数据作为特征 X.append(data[i:i+seq_len]) # 下一个数据作为预测标签 y.append(data[i+seq_len]) return np.array(X), np.array(y) # 提取时间序列的数值数组 ts_values = ts.values # 构造窗口(示例:用过去7天数据预测第8天) X_train, y_train = create_sliding_window(ts_values, seq_len=7) # X_train形状:(样本数, 7),y_train形状:(样本数,)
内容的提问来源于stack exchange,提问作者Daedomdan
相关产品推荐
相关产品推荐

