2017-07-24 59 views
-4

我有,類型錯誤:爲+不受支持的操作數類型:「時間戳」和「浮動」

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座標是從數據幀的指數衍生。並使用日期時間模塊。 請大家幫忙,準備用不同的方法來代替多項式擬合。

+0

'x = [2017-06-07 00:00:00,2017-07-19 00:00:00]'會拋出SyntaxError:無效的語法。 –

+0

@OwlMax我有工作代碼,我只是在這裏粘貼,以更簡單的形式更容易理解。 – BlueQuant

+1

請提供最低工作示例。否則沒人能幫忙。刪除沒有必要回答您的問題的所有內容,例如只保留添加內容和Timestamp對象。試着解釋爲什麼你需要首先做一個補充。那麼我相信你會有正確和有用的答案。 –

回答

0

np.polyfit顯然期待純數字值。您可以將您的是這樣的:

coefficients = np.polyfit(np.asarray(x).astype(float), y, 1) 

將在您的時間戳轉換爲某種具有劃時代的時間,那麼你可以做配合,如果你需要(更可能你會轉換其他X轉換回時間戳值浮動使用相同的邏輯,所以你可以使用模型進行預測)。

+0

感謝您的回答。我用你所告知的替換了。它拋出AttributeError:'list'對象沒有屬性'astype'。我是python的新手,所以請你詳細說明,任何幫助將不勝感激,再次感謝。 – BlueQuant

+1

@BlueQuant:好的,我更新了答案。我沒有意識到你的實際輸入不是NumPy數組。現在它應該工作。 –

+0

現在它說,float()參數必須是一個字符串或數字,而不是'Timestamp':( – BlueQuant

-1

如果函數不支持日期時間,那麼將它們轉換爲浮點數可能是最簡單的(例如t0以來的秒數)。

+1

你能解釋一下怎麼做嗎? – BlueQuant

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/16808839) –

相關問題