for ax, lag in zip(axes.flat, np.arange(1,lags+1, 1)): lag_str = 't-{}'.format(lag) X = (pd.concat([sentiment_short, sentiment_short.shift(-lag)], axis=1, keys=['y'] + [lag_str]).dropna())
时间: 2023-05-20 14:07:09 浏览: 162
这是一个 Python 代码片段,用于创建一个时间序列的滞后版本。它使用了 pandas 库中的 concat 和 shift 函数。具体来说,它将 sentiment_short 数据框向下平移 lag 个时间步,并将结果与原始数据框连接起来,形成一个新的数据框 X。其中 lag_str 是一个字符串,用于表示当前滞后的时间步。
相关问题
""" Processing the data """ import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler, MinMaxScaler def process_data(train, test, lags): """Process data Reshape and split train\test data. # Arguments train: String, name of .csv train file. test: String, name of .csv test file. lags: integer, time lag. # Returns X_train: ndarray. y_train: ndarray. X_test: ndarray. y_test: ndarray. scaler: StandardScaler. """ attr = 'volumn' df1 = pd.read_csv(train, encoding='utf-8').fillna(0) df2 = pd.read_csv(test, encoding='utf-8').fillna(0) # scaler = StandardScaler().fit(df1[attr].values) scaler = MinMaxScaler(feature_range=(0, 1)).fit(df1[attr].values.reshape(-1, 1)) flow1 = scaler.transform(df1[attr].values.reshape(-1, 1)).reshape(1, -1)[0] flow2 = scaler.transform(df2[attr].values.reshape(-1, 1)).reshape(1, -1)[0] train, test = [], [] for i in range(lags, len(flow1)): train.append(flow1[i - lags: i + 1]) for i in range(lags, len(flow2)): test.append(flow2[i - lags: i + 1]) train = np.array(train) test = np.array(test) np.random.shuffle(train) X_train = train[:, :-1] y_train = train[:, -1] X_test = test[:, :-1] y_test = test[:, -1] return X_train, y_train, X_test, y_test, scaler
这段代码主要是用来对数据进行预处理,包括数据读取、缺失值填充、归一化、数据切分等操作。其中,train和test是数据集的文件名,lags是时间滞后的长度。在函数内部,首先读入train和test文件,并对缺失值进行填充。然后使用MinMaxScaler将原始数据归一化到0到1之间。接着,将数据按时间滞后的长度lags进行切分,生成训练集和测试集,并将其转换成numpy数组格式。最后,将训练集和测试集随机打乱顺序,并将输入和输出分别存储到X_train、y_train、X_test和y_test中,同时返回scaler对象,以便在后续预测时对数据进行还原操作。
def get_lag(data, col, lagtime): for i in range(1, lagtime + 1): if len(pd.Series(col)) == 1: data[col + "_lag" + str(i)] = data[col].shift(i * 15) else: for col_j in col: data[col_j + "_lag" + str(i)] = data[col_j].shift(i * 15) return data
这段代码是一个用于生成时间序列滞后特征的函数。具体来说,它用 lagtime 参数指定了需要生成几个滞后特征,对于每个滞后特征,函数将原始数据集中的 col 列向上平移 i * 15 个单位,并将平移后的结果作为新的一列添加到数据集中。其中,如果 col 列包含多个子列,函数会对每个子列都生成一个滞后特征。最后,函数返回生成滞后特征后的数据集。需要注意的是,这里的 15 是一个硬编码的值,如果数据集中的时间单位不是 15 分钟,需要根据实际情况进行调整。
阅读全文