python - 如何拆分时间数据(格式为 yyyy-mm-dd hh:mm:ss)来测试和训练集?
问题描述
我有一个时间序列数据,时间为“ 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
也许您必须先将您的列类型转换为日期时间格式:
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]
作为替代方案,您可以查看TimeSeriesSplit的sklearn
.
推荐阅读
- reactjs - Express 或 react 正在删除标题
- jquery - 在 Google Chat 中创建新话题 - 如何发送新的指定话题密钥?
- javascript - 我如何在reactjs中更新获取请求
- json - 如何在golang中打印json值
- ios - iOS 订阅 DID_CHANGE_RENEWAL_STATUS 通知:latest_expired_receipt vs latest_receipt
- android - TouchOpacity 组件设置为在 android 中定位绝对不可点击
- java - 尝试使用 gzip 编码但得到 400 响应的 HTTPUrlConnection 编写 post 语句
- java - 根据另一个字符串数组的值,仅从数组中提取某些对象
- javascript - 使用 jqTree 在节点删除时触发事件
- javascript - 如何使用 javascript 触发器管理 PHP 列表