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"?
- Werfen Sie einen Blick auf diese Methode, die ein großes upgrade bei pandas version 0.13 veröffentlicht ist jetzt jeden Tag....
- pandas.pydata.org/pandas-docs/dev/generated/... in 0.13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit pandas git master (
98e48ca
) können Sie Folgendes tun:Standardmäßig
Series.interpolate()
führt die lineare interpolation. Sie könnenDataFrame.resample()
mit unregelmäßig abgetasteten Daten als gut.Ok, ich Tat dies: