繁体   English   中英

如何拆分时间数据(格式为yyyy-mm-dd hh:mm:ss)以测试和训练集合?

[英]How to split time data (in format of yyyy-mm-dd hh:mm:ss) to test and train sets?

我有一个时间序列数据,其时间格式为“ yyyy-mm-dd hh:mm:ss ”。 我想将行分为训练和测试集。 但是我尝试执行此操作的所有方法都失败了。

如何将以下数据拆分为测试集和训练集:

DATE-TIME          TEMP     PRE
2018-08-4 15:18:49 209.3851 4045.4414
2018-08-4 15:18:50 209.3851 4045.4314
2018-08-4 15:18:51 209.3581 4045.4268
2018-08-4 15:18:52 209.3553 4045.4343
2018-08-4 15:18:53 209.3553 4045.4307
...

下面的代码不起作用:

...
split_date = pd.Timestamp('2018-08-4 15:18:52')

train = data.loc[:split_date]
test = data.loc[split_date:]
...

我认为您的时间戳是经过排序的,因此您可以使用

split_date = pd.Timestamp('2018-08-4 15:18:52')

train = df[df['DATE-TIME'] < split_date]
test = df[df['DATE-TIME'] > split_date]

结果:

培养:

DATE-TIME   TEMP    PRE
0   2018-08-04 15:18:49 209.3851    4045.4414
1   2018-08-04 15:18:50 209.3851    4045.4314
2   2018-08-04 15:18:51 209.3581    4045.4268

测试:

DATE-TIME   TEMP    PRE
4   2018-08-04 15:18:53 209.3553    4045.4307

也许您必须先将columntype转换为datetime格式:

df['DATE-TIME'] = pd.to_datetime(df['DATE-TIME'])

如果您的时间戳记是索引而不是数据帧的列,只需将df['DATE-TIME']替换为df.index

df.index = pd.to_datetime(df.index)

split_date = pd.Timestamp('2018-08-4 15:18:52')

train = df[df.index < split_date]
test = df[df.index > split_date]

或者,您可以查看sklearn TimeSeriesSplit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM