python - 类型错误 : unsupported operand type(s) for +: 'Timestamp' and 'float'

标签 python pandas numpy matplotlib

我有,

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/

相关文章:

python - 如何始终使用selenium运行python脚本但不在我的电脑上

python - 在 Python 中启动屏幕并执行 bash 命令

python - 从 Pandas 数据框中提取非嵌套列表

python - 在 Python Dataframe 中汇总行

python - 通过 Homebrew 软件在 macOS 上安装 numpy、scipy 和 matplotlib 的不同方法

django - Numpy 运行时警告导致 Apache Worker 卡住在 "Sending Reply"状态

python - QGraphicsView 未在 QMainWindow 中显示

Gitlab CI 中的 Python 覆盖率未显示任何百分比

python - dtype Int64 不返回基础数据的 View ?

python - 如何做总和的平方和的总和?