2017-10-18 35 views
1

根據以下我有這個TypeError,我檢查了我的df,它全部只包含數字,當我轉換爲numpy數組時,是否可能導致這種情況?轉換後的陣列有像在異構陣列上調用preprocessing.scale

[Timestamp('1993-02-11 00:00:00') 28.1216 28.3374 ...] 

任何建議如何解決這個,請?

df:   
    Date  Open  High  Low  Close  Volume 
9 1993-02-11 28.1216 28.3374 28.1216 28.2197  19500 
10 1993-02-12 28.1804 28.1804 28.0038 28.0038  42500 
11 1993-02-16 27.9253 27.9253 27.2581 27.2974  374800 
12 1993-02-17 27.2974 27.3366 27.1796 27.2777  210900 

X = np.array(df.drop(['High'], 1)) 
X = preprocessing.scale(X) 

TypeError: float() argument must be a string or a number 
+1

好開始,錯誤是不言自明的:它不能處理的datetime對象或任何你的日期。 – sascha

回答

0

當你說你的數據框「所有包含數字只有」,你也注意到,第一列由datetime對象的。錯誤是告訴你preprocessing.scale只想使用浮點值。

然而,真正的問題是你期望發生的事情。 preprocessing.scale以均值爲中心值並對方差進行歸一化。這就是說,所測量的數量都大致相同。現在,您的第一列將告訴您數據對應的日期,而其餘列則是數字數據本身。爲什麼你想要規範日期? 如何你會標準化日期?

從語義上講,我相信你應該讓你的日子獨自一人。無論您計劃對數字數據執行哪些後期處理,規範化數據仍應按原始日期進行參數化。如果你也想處理你的日期,你需要想出一個明確的方式來處理你的日期到數字(例如,elapsed time from a given date in given units)。

所以我相信你應該從你處理放下你的日期輪乾脆,並與

X = df.drop(['Date','High'], 1).as_matrix()