我有,
x = [2017-06-07, 2017-07-19]
y = [155.98, 151.42]
我想绘制一条直线并找到y截距(第3点)。 现在我正在使用多项式拟合方法绘制线。
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()
但是我得到了错误:
追踪(最近一次呼叫最后一次):
文件“D:/Coding/Line.py”,第3行,
系数= np.polyfit(x,y,1)
文件“C:\ Users \ Arjun \ Anaconda3 \ lib \ site-packages \ numpy \ lib \ polynomial.py”,第546行,在polyfit中 x = NX.asarray(x)+ 0.0
TypeError:+的不支持的操作数类型:'Timestamp'和'float' 但我不知道如何转换Timestamp类型的索引以在多项式中使用它。
注意: x坐标是从Dataframe的索引派生的。并使用datetime模块。 请帮助,并准备使用不同的方法绘制线代替多项式拟合。
答案 0 :(得分:0)
np.polyfit
显然期待纯数值。你可以这样转换你的:
coefficients = np.polyfit(np.asarray(x).astype(float), y, 1)
这会将您的时间戳转换为某种纪元时间,然后您可以根据需要进行拟合并转换回时间戳(更有可能您将使用相同的逻辑将其他X值转换为浮点数,以便您可以制作使用该模型的预测。)
答案 1 :(得分:-1)
如果函数不支持日期时间,那么将它们转换为浮点数可能是最简单的(例如,从t0开始的秒数)。