Das DateOffset-Objekt von Pandas ist ein Werkzeug, das verwendet wird, um Zeitverschiebungen bei der Verarbeitung von Datums- und Zeitdaten durchzuführen.

Im Folgenden finden Sie einige wichtige Funktionen und Anwendungen von DateOffset:

Grundlegende Konzepte

Das DateOffset-Objekt ähnelt Timedelta, folgt jedoch kalenderbasierten Datetime-Regeln, anstatt direkt arithmetische Berechnungen zeitlicher Natur durchzuführen. Das bedeutet, dass DateOffset tatsächliche Kalendertage berücksichtigt. Wenn Sie beispielsweise mit Datumsangaben arbeiten, die Monate oder Jahre überschreiten, berechnet es die Tagesdifferenzen korrekt, während Timedelta einfach die angegebene Anzahl von Tagen addiert, ohne Änderungen in Monaten und Jahren zu berücksichtigen.

Nutzung

DateOffset kann Datumsverschiebungsoperationen über arithmetische Operatoren (wie +) oder die apply-Methode durchführen.

Zum Beispiel können Sie DateOffset wie folgt verwenden, um Monate oder Stunden hinzuzufügen:

Beispiele

ts = pd.Timestamp('2017-01-01 09:10:11')
ts + DateOffset(months=3)  # Drei Monate hinzufügen
ts + DateOffset(hours=2)   # Zwei Stunden hinzufügen

Wenn keine Parameter angegeben werden, fügt DateOffset() standardmäßig einen Kalendertag hinzu:

ts + DateOffset()  # 默认增加一天

Unterstützte Parameter

DateOffset unterstützt mehrere Parameter, mit denen Sie Zeiteinheiten angeben können, die hinzugefügt oder ersetzt werden sollen, wie Jahre, Monate, Wochen, Tage, Stunden, Minuten, Sekunden usw. Diese Parameter können zum Offset-Wert hinzugefügt werden (wie Jahre, Monate, Wochen, Tage, Stunden, Minuten, Sekunden usw.) oder den Offset-Wert ersetzen (wie Jahr, Monat, Tag, Wochentag, Stunde, Minute, Sekunde usw.).

Spezielle Methoden

DateOffset bietet außerdem die Methoden rollforward() und rollback(), mit denen Datumsangaben vorwärts oder rückwärts auf das nächstgelegene gültige Datum verschoben werden. Wenn Sie beispielsweise einen Geschäftstag-Offset (BDay) verwenden, werden Wochenenden übersprungen und direkt zum nächsten Geschäftstag gerollt.

Beispiele

friday = pd.Timestamp('2022-01-05')
two_business_days = 2 * pd.offsets.BDay()
friday + two_business_days  # Zwei Geschäftstage hinzufügen, Wochenenden überspringen

Frequenz-Strings

DateOffset unterstützt Frequenz-Strings oder Offset-Aliase, die als Parameter freq übergeben werden können. Diese Frequenz-Strings repräsentieren DateOffset-Objekte und ihre Unterklassen und definieren die Frequenz von Datetime-Indizes.

DateOffset ist ein sehr nützliches Werkzeug in Pandas für die Verarbeitung von Zeitreihendaten, da es Datums- und Zeitverschiebungsoperationen besser mit tatsächlichen Kalenderregeln in Einklang bringt.


Häufig verwendete Funktionen

DateOffset-Konstruktor

Klasse/Methode Beschreibung
pd.DateOffset(**kwargs) Erstellt ein DateOffset-Objekt, das benutzerdefinierte Zeitverschiebungen unterstützt.

Häufige DateOffset-Unterklassen

Klasse Beschreibung
pd.offsets.Day() Stellt eine Verschiebung um Tage dar.
pd.offsets.BDay() Stellt eine Verschiebung um Geschäftstage dar (ohne Wochenenden).
pd.offsets.Hour() Stellt eine Verschiebung um Stunden dar.
pd.offsets.Minute() Stellt eine Verschiebung um Minuten dar.
pd.offsets.Second() Stellt eine Verschiebung um Sekunden dar.
pd.offsets.Milli() Stellt eine Verschiebung um Millisekunden dar.
pd.offsets.Micro() Stellt eine Verschiebung um Mikrosekunden dar.
pd.offsets.MonthEnd() Stellt eine Verschiebung zum Monatsende dar.
pd.offsets.MonthBegin() Stellt eine Verschiebung zum Monatsanfang dar.
pd.offsets.YearEnd() Stellt eine Verschiebung zum Jahresende dar.
pd.offsets.YearBegin() Stellt einen Offset für den Beginn des Jahres dar.
pd.offsets.QuarterEnd() Stellt einen Offset für das Ende des Jahres dar.
pd.offsets.QuarterBegin() Stellt einen Offset für den Beginn des Quartals dar.
pd.offsets.Week() Stellt einen Offset von Wochen dar.
pd.offsets.WeekOfMonth() Stellt einen Offset der n-ten Woche des Monats dar.

DateOffset-Attribute

Attribute Beschreibung
DateOffset.name Gibt den Namen des DateOffset zurück.
DateOffset.n Gibt die Anzahl der Offsets zurück oder legt sie fest.
DateOffset.normalize Gibt zurück oder legt fest, ob die Uhrzeit auf Mitternacht normalisiert wird.

DateOffset-Methoden

Methode Beschreibung
DateOffset.apply(other) Wendet den Offset auf ein anderes datetime-Objekt an.
DateOffset.rollforward(other) Rollt das Datum zum nächsten Offset vorwärts.
DateOffset.rollback(other) Das Datum auf den vorherigen Offset zurückrollen.
DateOffset.is_anchored() Prüfen, ob der Offset verankert ist (d. h., ob er eine feste Frequenz hat).
DateOffset.onOffset(date) Prüfen, ob das Datum mit dem Offset ausgerichtet ist.

Beispiele

Beispiele

import pandas as pd
from pandas.tseries.offsets import Day, BDay, MonthEnd

# DateOffset erstellen
offset = Day(3)
print(offset)  # Ausgabe <3 * Days>

# DateOffset anwenden
date = pd.Timestamp('2023-01-01')
new_date = date + offset
print(new_date)  # Ausgabe 2023-01-04

# Eine gemeinsame Unterklasse verwenden
bday_offset = BDay(2)
new_bdate = date + bday_offset
print(new_bdate)  # Ausgabe 2023-01-05 (Wochenenden werden übersprungen)

# Monatsende-Offset
month_end_offset = MonthEnd()
new_month_end = date + month_end_offset
print(new_month_end)  # Ausgabe 2023-01-31

Detaillierte Parameterbeschreibung

pd.DateOffset()

Parameter Beschreibung
years Anzahl der Jahre Versatz.
months Anzahl der Monate Versatz.
weeks Anzahl der Wochen Versatz.
days Anzahl der Tage Versatz.
hours Anzahl der Stunden Versatz.
minutes Anzahl der Minuten Versatz.
seconds Anzahl der Sekunden Versatz.
milliseconds Anzahl der Millisekunden Versatz.
microseconds Anzahl der Mikrosekunden Versatz.
nanoseconds Anzahl der Nanosekunden Versatz.

pd.offsets.BDay()

Parameter Beschreibung
n Die Anzahl der Versätze, standardmäßig 1.
normalize Ob die Zeit auf Mitternacht normalisiert werden soll, standardmäßigFalse。

pd.offsets.MonthEnd()

Parameter Beschreibung
n Die Anzahl der Versätze, standardmäßig 1.
normalize Ob die Zeit auf Mitternacht normalisiert werden soll, standardmäßigFalse。

Für weitere detaillierte Informationen sieheOffizielle Pandas-Dokumentation。

Andere Erweiterungen