Python-Numpy oder Pandas Lineare Interpolation Für die Datetime-bezogene Werte

Ich habe Daten, die wie folgt aussieht, aber ich habe auch die Kontrolle, wie es formatiert ist. Im Grunde genommen, will ich mit Python mit Numpy oder Pandas zu interpolieren, das dataset zu erreichen per Sekunde interpolierten Daten, so dass Sie eine viel höhere Auflösung.

So will ich Linear interpolieren und produzieren neue Werte zwischen die echten Werte, die ich derzeit habe, während die ursprünglichen Werte.

Wie kann ich dies erreichen mit Pandas oder Numpy?

Als Beispiel, ich habe diese Art der Daten:

       TIME               ECI_X            ECI_Y          ECI_Z
 2013-12-07 00:00:00, -7346664.77912, -13323447.6311, 21734849.5263,@
 2013-12-07 00:01:00, -7245621.40363, -13377562.35, 21735850.3527,@
 2013-12-07 00:01:30, -7142326.20854, -13432541.9267, 21736462.4521,@
 2013-12-07 00:02:00, -7038893.48454, -13487262.8599, 21736650.3293,@
 2013-12-07 00:02:30, -6935325.24526, -13541724.0946, 21736413.9937,@
 2013-12-07 00:03:00, -6833738.23865, -13594806.9333, 21735778.2218,@
 2013-12-07 00:03:30, -6729905.37597, -13648746.6281, 21734705.6406,@
 2013-12-07 00:04:00, -6625943.01291, -13702423.5112, 21733208.9233,@
 2013-12-07 00:04:30, -6521853.17291, -13755836.5481, 21731288.1125,@
 2013-12-07 00:05:00, -6419753.85176, -13807871.3011, 21729016.1386,@
 2013-12-07 00:05:30, -6315415.32918, -13860754.6497, 21726259.4135,@
 2013-12-07 00:06:00, -6210955.33186, -13913371.1187, 21723078.7695,@
 ...

Und ich würde es gerne per Sekunde - d.h.

 2013-12-07 00:00:00, -7346664.77912, -13323447.6311, 21734849.5263,@
 2013-12-07 00:00:01, -7346665.10000, -13323448.1000, 21734850.1000,@
 ...
 2013-12-07 00:00:59, -7346611.10000, -13323461.1000, 21734850.1000,@
 2013-12-07 00:01:00, -7245621.40363, -13377562.3500, 21735850.3527,@

Bitte zeigen Sie mir ein Beispiel, wie ich dies erreichen können. Danke!

Habe ich versucht, dieses:

#! /usr/bin/python

import datetime
from pandas import *

first = datetime(2013,12,8,0,0,0)
second = datetime(2013,12,8,0,2,0)
dates = [first,second]
x = np.array([617003.390723, 884235.38059])
newRange =  date_range(first, second, freq='S')
ts = Series(x, index=dates)
ts.interpolate()
print ts.head()

#2013-12-08 00:00:00, 617003.390723, -26471116.2566, 3974868.93334,@
#2013-12-08 00:02:00, 884235.38059, -26519366.9219, 3601627.52947,@

Wie verwende ich die "newRange" zu erstellen, die Linear interpolierte Werte zwischen den realen Werten in "x"?

InformationsquelleAutor PhilBot | 2013-12-08
Schreibe einen Kommentar