2017-10-18 16 views
1

J'ai ceci TypeError comme ci-dessous, j'ai vérifié mon df et tout cela contient des nombres seulement, cela peut-il être causé quand je convertis en tableau numpy? Après la conversion le tableau a des articles commeAppeler preprocessing.scale sur un tableau hétérogène

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

Une suggestion pour résoudre ce problème, s'il vous plaît?

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

Eh bien, l'erreur est explicite: il ne peut pas traiter avec des objets datetime ou quelles que soient vos dates sont . – sascha

Répondre

0

Pendant que vous dites que votre dataframe « tous contient uniquement des chiffres », vous remarquerez également que la première colonne est constituée d'objets datetime. L'erreur vous indique que preprocessing.scale ne veut que travailler avec des valeurs flottantes. La vraie question, cependant, est de savoir ce que vous attendez pour commencer. preprocessing.scale centre les valeurs sur la moyenne et normalise la variance. Cela est tel que les quantités mesurées sont toutes représentées sur à peu près le même pied. Maintenant, votre première colonne vous indique à quelles dates vos données correspondent, tandis que le reste des colonnes sont elles-mêmes des données numériques. Pourquoi voudriez-vous normaliser les dates? Comment pourriez-vous normaliser les dates? Sémantiquement parlant, je crois que vous devriez laisser vos dates tranquilles. Quel que soit le post-traitement que vous envisagez d'effectuer sur vos données numériques, les données normalisées doivent toujours être paramétrées par les dates d'origine. Si vous voulez aussi traiter vos dates, vous devez trouver une façon explicite de gérer vos dates en quelque chose de numérique (par exemple, elapsed time from a given date in given units).

Je crois que vous devez déposer vos dates de votre traitement tout à fait rond, et commencer par

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