【发布时间】:2017-12-29 22:56:35
【问题描述】:
我有,
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()
但出现错误:
Traceback(最近一次调用最后一次):
文件 "D:/Coding/Line.py", line3, in
系数 = 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 模块。 请帮忙,并准备使用不同的方法来画线代替多项式拟合。
【问题讨论】:
-
x = [2017-06-07 00:00:00, 2017-07-19 00:00:00]会抛出 SyntaxError: invalid syntax。 -
请提供最低限度的工作示例。否则没有人能帮上忙。删除回答您的问题不需要的所有内容,例如只保留添加和 Timestamp 对象。首先尝试解释为什么需要添加。那我相信你会有正确有用的答案。
-
x = [2017-06-07, 2017-07-19]计算结果为x = [2004,1991]。代码与报告的错误不匹配。请参阅minimal reproducible example。 -
@BlueQuant,np。请不要将反对票视为惩罚,而是将其视为编写更好问题的可能改进。 SO 的社区有时对新手有点苛刻。只要继续努力! IMO,从长远来看是值得的。
-
@OwlMax 哈哈,没问题,我会以积极的方式接受它,我会遵守规则。
标签: python pandas numpy matplotlib