Ich habe folgende Datenrahmen verwenden, eine wöchentliche Preisdaten timeserie mit einem Zeitraum Index. Nennen wir es df
Resampling/Upsample Zeitraum Index und beide extreme Zeit „Kanten“ der Daten
timestamp open high low close volume
timestamp
2009-02-01/2009-02-07 733442.166309 830.540773 832.586910 828.788627 830.706009 48401.952790
2009-02-08/2009-02-14 733449.166309 839.945279 841.763948 837.812232 839.742489 53429.330472
2009-02-15/2009-02-21 733456.245777 790.733108 792.399775 788.897523 790.549550 50671.887387
2009-02-22/2009-02-28 733463.166309 760.586910 762.640558 758.234979 760.428112 60565.506438
Wenn ich versuche, es zu sampeln df.resample('30min').mean()
mit den Daten an 2009-02-22
endet. Ich möchte, dass es bei 2009-02-28
endet, während immer noch bei 2009-02-01
gestartet wird. Wie kann ich das machen?
Ich vermute, es hat mit den closed
und label
Werte der resample
Funktion zu tun, aber die sind nicht sehr gut in der doc erklärt.
Hier ein Ausschnitt der Datenrahmen zu rekonstruieren:
import pandas as pd
from pandas import Period
dikt={'volume': {Period('2009-02-01/2009-02-07', 'W-SAT'): 48401.952789699571, Period('2009-02-08/2009-02-14', 'W-SAT'): 53429.330472103007, Period('2009-02-15/2009-02-21', 'W-SAT'): 50671.887387387389, Period('2009-02-22/2009-02-28', 'W-SAT'): 60565.506437768243}, 'close': {Period('2009-02-01/2009-02-07', 'W-SAT'): 830.70600858369096, Period('2009-02-08/2009-02-14', 'W-SAT'): 839.74248927038627, Period('2009-02-15/2009-02-21', 'W-SAT'): 790.54954954954951, Period('2009-02-22/2009-02-28', 'W-SAT'): 760.42811158798281}, 'open': {Period('2009-02-01/2009-02-07', 'W-SAT'): 830.54077253218884, Period('2009-02-08/2009-02-14', 'W-SAT'): 839.94527896995703, Period('2009-02-15/2009-02-21', 'W-SAT'): 790.73310810810813, Period('2009-02-22/2009-02-28', 'W-SAT'): 760.58690987124464}, 'high': {Period('2009-02-01/2009-02-07', 'W-SAT'): 832.58690987124464, Period('2009-02-08/2009-02-14', 'W-SAT'): 841.76394849785413, Period('2009-02-15/2009-02-21', 'W-SAT'): 792.39977477477476, Period('2009-02-22/2009-02-28', 'W-SAT'): 762.64055793991417}, 'low': {Period('2009-02-01/2009-02-07', 'W-SAT'): 828.78862660944208, Period('2009-02-08/2009-02-14', 'W-SAT'): 837.8122317596567, Period('2009-02-15/2009-02-21', 'W-SAT'): 788.89752252252254, Period('2009-02-22/2009-02-28', 'W-SAT'): 758.23497854077254}, 'timestamp': {Period('2009-02-01/2009-02-07', 'W-SAT'): 733442.16630901292, Period('2009-02-08/2009-02-14', 'W-SAT'): 733449.16630901292, Period('2009-02-15/2009-02-21', 'W-SAT'): 733456.24577702698, Period('2009-02-22/2009-02-28', 'W-SAT'): 733463.16630901292}}
pd.DataFrame(dikt, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
Ja thx es funktioniert. Es ist ein bisschen verwirrend für mich, warum die Verwendung dieses mittleren Schrittes von 'D' freq das Ergebnis verändert? – Radar
Der Grund für die Downsampling-Frequenz von wöchentlich war täglich, um sicherzustellen, dass wir beide den Beginn und das Ende Zeitraum Daten als Teil unserer 'DateTimeIndex' haben für uns, unsere Ergebnisse zu extrapolieren. 'asfreq()' spielt dann die Rolle, dies zu ändern und Lücken für fehlende Daten zu füllen. –
Die Verwendung der '.asfreq()' Methode für das Resampling von Perioden wird in den Dokumenten auch etwas erwähnt. Lesen Sie: http://pandas.pydata.org/pandas-docs/stable/timeseries.html # frequency-conversion-and-resampling-with-periodindex –