2017-06-09 3 views
0

Der Versuch, das Modell der Zeitreihenvorhersage in Python zu implementieren, aber mit Problemen mit Datetime-Daten konfrontiert.Datetime-Probleme während der Zeitreihenvorhersage in Pandas

So habe ich eine Datenrahmen ‚df‘ mit zwei Spalten von Datetime und Schwimmertypen:

enter image description here

Dann versuche ich ein Array mit Werten Methode zu bauen. Aber smth seltsame passiert und es zeigt das Datum in seltsamem Format mit Zeitstempel und Zeit:

enter image description here

Und im Grunde, weil es, ich kann nicht das Modell implementieren Aufnahme die folgenden Meldungen zum Beispiel: "Kann nicht Integralwert hinzufügen Timestamp ohne Freq. "

Also, was scheint das Problem zu sein und wie kann es gelöst werden?

+0

Echt Daten konvertieren. Bilder helfen nicht – piRSquared

Antwort

1

Es ist kompliziert.

Zunächst einmal, wenn Sie ein numpy Array erstellen, werden alle Typen gleich sein. datetime64 ist jedoch nicht dasselbe wie int. Also müssen wir das lösen und wir werden es tun.

Zweitens haben Sie versucht, dies mit df.values zu tun. Was jedoch sinnvoll ist, ist, dass pandas das gesamte df in dtype=object dann in ein object Array macht. Das Problem dabei ist, dass Timestamps als Timestamps verlassen werden, die Ihnen in den Weg kommt.

Also würde ich sie auf meinem eigenen konvertieren wie diese

a = np.column_stack([df[c].values.astype(int) for c in ['transaction_date', 'amount']]) 

a 

array([[1454284800000000000,     1], 
     [1454371200000000000,     2], 
     [1454457600000000000,     3], 
     [1454544000000000000,     4], 
     [1454630400000000000,     5]]) 

Wir können immer die erste Spalte eines zurück wie diese bitte

a[:, 0].astype(df.transaction_date.values.dtype) 

array(['2016-02-01T00:00:00.000000000', '2016-02-02T00:00:00.000000000', 
     '2016-02-03T00:00:00.000000000', '2016-02-04T00:00:00.000000000', 
     '2016-02-05T00:00:00.000000000'], dtype='datetime64[ns]') 
-1

Sie können Ihre ganze Zahl in eine timedelta, konvertieren und die Berechnungen wie vorher:

from datetime import timedelta 

interval = timedelta(days = 5) 

#5 days later 
time_stamp += interval 
Verwandte Themen