我有,
x = [2017-06-07, 2017-07-19]
y = [155.98, 151.42]
我想画一条直线并找到 y 截距(第三点)。 现在我使用多项式拟合方法来绘制线。
x = [2017-06-07, 2017-07-19]
y = [155.98, 151.42]
coefficients = np.polyfit(x, y, 1)
polynomial = np.poly1d(coefficients)
x_axis = np.linspace(2017-06-07, 2017-07-19 + 42 ,3) #linspace(start, end, num)
y_axis = polynomial(x_axis)
3rd_y_intercept = y_axis[2]
plt.plot(x_axis, y_axis)
plt.plot(x[0], y[0], 'go')
plt.plot(x[1], y[1], 'go')
plt.show()
但出现错误:
Traceback (most recent call last):
File "D:/Coding/Line.py", line3, in
coefficients = np.polyfit(x, y, 1)
File "C:\Users\Arjun\Anaconda3\lib\site-packages\numpy\lib\polynomial.py", line 546, in polyfit x = NX.asarray(x) + 0.0
TypeError: unsupported operand type(s) for +: 'Timestamp' and 'float' But i dont know how to convert Index of type Timestamp to use it in polynomial.
注意:x 坐标源自 Dataframe 的索引。并正在使用日期时间模块。 请帮忙,我准备使用不同的方法来画线来代替多项式拟合。
最佳答案
np.polyfit
显然需要纯数值。您可以像这样转换您的:
coefficients = np.polyfit(np.asarray(x).astype(float), y, 1)
这会将您的时间戳转换为某种纪元时间,然后您可以进行拟合并在需要时转换回时间戳(更有可能您会使用相同的逻辑将其他 X 值转换为 float ,这样您就可以使用模型进行预测)。
关于python - 类型错误 : unsupported operand type(s) for +: 'Timestamp' and 'float' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45279174/