我有一个数据框: 数据帧的索引是时间对象,一列名为“空闲持续时间”,作为一些数值。
14:09:00 1644
14:22:35 321
14:25:17 498
14:26:10 195
14:28:22 216
14:31:58 101
14:32:07 268
14:36:26 154
14:40:26 160
14:42:46 3085
14:45:21 172
14:50:29 71
14:51:14 594
14:52:03 79
14:55:32 130
14:55:39 69
14:57:29 80
14:58:15 68
14:59:57 78
15:02:15 112
15:03:09 191
15:04:10 537
15:04:26 85
15:04:45 65
15:05:20 223
15:07:28 95
15:13:26 117
15:13:39 176
15:15:22 73
15:15:30 70
... ...
16:08:29 181
16:09:47 137
16:10:28 345
16:12:10 138
16:14:34 65
16:15:00 104
16:15:41 65
16:16:40 91
16:16:43 415
16:17:36 302
16:18:12 2478
16:19:17 644
16:24:19 654
16:24:52 163
16:25:32 276
16:29:08 65
16:29:23 72
16:30:19 65
16:32:10 79
16:32:56 85
16:34:32 90
16:34:41 1261
16:34:52 65
16:38:13 277
16:40:06 155
16:43:11 110
16:50:57 1190
16:52:59 142
16:56:30 756
17:00:02 116
[102 rows x 1 columns]
我希望将最佳多项式拟合到此数据,以预测接下来30分钟的空闲持续时间。我使用polyfit函数来拟合多项式。但是我收到了这个错误:
TypeError:不支持的操作数类型+:'datetime.time'和'float'
任何人都可以在这里提出错误的建议。我的代码是:
Idletimes=pd.DataFrame(SampleOne, index=Times, columns=['Idle_duration'])
Idletimes.sort_index(inplace=True)
z = np.polyfit(Idletimes.index, Idletimes['Idle_duration'], 2)
print(z)
答案 0 :(得分:0)
您无法在日期对象上应用np.polyfit
。 x
和y
都应该是数字数组。
例如,请参阅the documentation中的以下示例:
x = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0])
y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
z = np.polyfit(x, y, 3)
z
array([ 0.08703704, -0.81349206, 1.69312169, -0.03968254])
因此,您需要将日期列转换为某些数值。正如@Evert建议的那样,您可以尝试将其转换为从初始起点开始的秒数。