Datumsangaben und Zeitreihen mit pandas

Lerne, mit Datums- und Zeitangaben in pandas zu arbeiten. Lies Datumsangaben aus Text ein, ohne Tag und Monat zu verwechseln, erstelle einen Zeitindex, wähle beliebige Tage, Monate oder Tageszeiten aus und vergleiche Werte mit früheren Werten. Erzeuge regelmäßige Datumsfolgen, verschiebe Datumswerte nach Kalenderregeln und arbeite mit Monaten, Quartalen und Geschäftsjahren als Perioden. Fasse Daten durch Resampling zu Tages-, Wochen- oder Monatssummen zusammen, fülle Lücken, glätte Zeitreihen mit gleitenden, wachsenden und exponentiell gewichteten Fenstern und berücksichtige Zeitzonen und Sommerzeit. Die Beispiele verwenden pandas 3 und Alltagsdaten wie Energiemesswerte, Temperaturen, Ladenumsätze und Websitebesuche.

MittelEinheit 6 von 8 in Kurs: Datenanalyse mit Python – NumPy, pandas und Matplotlib

Was du lernst

  1. Zeitpunkte und Zeitdauern in den Datums- und Zeittypen von pandas speichern, Datumsangaben aus Text einlesen, ohne Tag und Monat zu verwechseln, und Kalenderkomponenten wie Monat und Wochentag auslesen.
    • Mit Zeitstempeln, Zeitdauern und Kalenderkomponenten arbeiten
      Timestamp, Timedelta und den Datentyp datetime64 nutzen, die Zeit zwischen Ereignissen berechnen und mit dem .dt-Accessor Komponenten wie Jahr, Stunde und Wochentag auslesen.
    • Datumsangaben aus Text einlesen und für die Ausgabe formatieren
      Text und Zahlen mit pd.to_datetime in Datums- und Zeitwerte umwandeln, Formate so wählen, dass Tag und Monat nicht vertauscht werden, mit nicht einlesbaren Werten umgehen und Datums- und Zeitwerte wieder in lesbaren Text umwandeln.
  2. Einen bereinigten, sortierten Zeitindex erstellen, damit beliebige Tage, Monate oder Zeitfenster auswählen und jeden Wert mit früheren Werten vergleichen.
    • Einen Zeitindex erstellen und prüfen
      Eine Datums- und Zeitspalte in einen sortierten DatetimeIndex umwandeln, doppelte Zeitstempel behandeln sowie Lücken und die Frequenz einer Zeitreihe ermitteln.
    • Zeilen nach Datum und Tageszeit auswählen
      Ganze Jahre, Monate, Tage und Zeiträume mit Datumszeichenketten auswählen, nach Wochentag oder Uhrzeit filtern und Fehler vermeiden, die falsche Zeilen zurückgeben.
    • Werte im Zeitverlauf anhand von Verschiebungen, Differenzen und prozentualen Änderungen vergleichen
      Werte verzögern und vorziehen, Änderungen und Wachstumsraten berechnen und verstehen, wie pandas zwei Zeitreihen anhand des Datums ausrichtet.
  3. Regelmäßige Datumsfolgen erstellen, Datumswerte nach Kalenderregeln wie „einen Monat später“ oder „nächster Geschäftstag“ verschieben und mit ganzen Monaten, Quartalen und Geschäftsjahren als Perioden arbeiten.
    • Regelmäßige Datumsfolgen mit Frequenzkürzeln erstellen
      Mit pd.date_range Folgen von Datums- und Zeitwerten erzeugen, das passende Frequenzkürzel wählen und das erste und letzte Datum korrekt festlegen.
    • Datumswerte mit kalenderbezogenen Offsets verschieben
      Feste Zeitdauern von Kalenderregeln unterscheiden und DateOffset, Monatsende-, Geschäftstags- und andere Offsets nutzen, um Datumswerte korrekt zu verschieben.
    • Mit ganzen Monaten, Quartalen und Geschäftsjahren als Perioden arbeiten
      Zeitspannen mit Period und PeriodIndex darstellen, zwischen Zeitstempeln und Perioden umwandeln und mit Quartalen eines Geschäftsjahres arbeiten.
  4. Detaillierte Daten zu Tages-, Wochen-, Monats- oder Quartalssummen und -mittelwerten aggregieren, ein feineres Zeitraster auffüllen und mehrere Zeitreihen gleichzeitig durch Resampling umwandeln.
    • Zeitreihen durch Downsampling zu Summen, Mittelwerten und anderen Kennwerten verdichten
      Daten mit resample in gröbere Zeitintervalle aggregieren, die passende Aggregation wählen und Intervallgrenzen und -bezeichnungen richtig lesen.
    • Eine Zeitreihe durch Upsampling verfeinern und Lücken füllen
      Daten auf ein feineres Zeitraster übertragen, neue Stellen durch Vorwärts- oder Rückwärtsauffüllen oder Interpolation füllen und fehlende Datumswerte sichtbar machen.
    • Mehrere Zeitreihen gruppenweise gleichzeitig durch Resampling umwandeln
      Eine lange Tabelle mit vielen Geschäften, Sensoren oder Kunden gruppenweise durch Resampling umwandeln und das Ergebnis für den Vergleich umformen.
  5. Gleitende Mittelwerte und andere Fensterkennwerte über eine Anzahl von Zeilen oder eine Zeitspanne sowie kumulative Summen und gewichtete Mittelwerte über den gesamten bisherigen Verlauf berechnen.
    • Gleitende Kennwerte über eine feste Anzahl von Zeilen berechnen
      rolling(n) für gleitende Mittelwerte, Summen und andere Kennwerte nutzen, unvollständige Fenster steuern und Fenster gruppenweise anwenden.
    • Zeitbasierte Fenster für unregelmäßig erfasste Daten nutzen
      Fenster durch eine Zeitspanne wie „7D“ definieren, verstehen, welche Beobachtungen jedes Fenster einschließt, und zwischen zeilenbasierten und zeitbasierten Fenstern wählen.
    • Kumulative Summen, kumulative Maxima und exponentiell gewichtete Mittelwerte verfolgen
      Wachsende Fenster für kumulative Kennwerte und Drawdowns sowie exponentiell gewichtete Mittelwerte nutzen, die neuere Werte stärker gewichten.
  6. Zeitstempeln die richtige Zeitzone zuordnen, zwischen Zeitzonen umrechnen, Daten aus verschiedenen Zeitzonen kombinieren und Stunden berücksichtigen, die bei der Sommerzeitumstellung übersprungen oder wiederholt werden.
    • Zeitstempeln Zeitzonen zuordnen und zwischen Zeitzonen umrechnen
      Zeitstempel ohne und mit Zeitzoneninformation unterscheiden, mit tz_localize eine Zeitzone zuordnen, mit tz_convert umrechnen und Daten aus verschiedenen Zeitzonen kombinieren.
    • Sommerzeit in Zeitreihen berücksichtigen
      Übersprungene und wiederholte Ortszeiten erkennen, bewusst lokalisieren und an Tagen mit 23 oder 25 Stunden korrektes Resampling und korrekte Verschiebungen durchführen.

Zeitreihen mit pandas einfach erklärt

6 Kapitel

1

Datums- und Zeitangaben in Werte umwandeln, mit denen du in pandas rechnen kannst

Datumsangaben liegen als Zeichenketten, Zahlen und Uhrzeiten vor, für die Analyse braucht es aber eine einheitliche Darstellung. Lerne, diese Eingaben in Zeitpunkte und Zeitdauern umzuwandeln, fehlgeschlagene Umwandlungen zu prüfen und nützliche Kalenderkomponenten auszulesen. Die Beispiele unterscheiden zwischen einem gespeicherten Datums- und Zeitwert und seinem Anzeigetext, sodass späteres Sortieren, Auswählen und Rechnen die Kalenderbedeutung berücksichtigt. Kleine Details wie Formatcodes für Monat und Minute und die Speicherauflösung können ein Ergebnis erheblich verändern.

1.1 Mit Zeitstempeln, Zeitdauern und Kalenderkomponenten arbeiten

Ein Datumswert ist nützlicher, wenn pandas ihn als solchen erkennt. Eine Zeitreihe verknüpft Beobachtungen mit Zeitpunkten oder Zeitspannen. Stündliche Energiemesswerte bilden eine regelmäßige Zeitreihe; Bestellungen in ungleichmäßigen Abständen eine unregelmäßige. Text wie „12/31/2024“ kann nach „03/01/2025“ einsortiert werden, obwohl der Dezember früher war. Einheitliche vollständige ISO-Zeichenketten lassen sich korrekt sortieren, doch Datums- und Zeitwerte ermöglichen zusätzlich die Auswahl nach Kalenderangaben und Rechnungen.

Das passende Zeitobjekt wählen

Python stellt datetime, date und timedelta bereit. In pandas enthält ein Timestamp einen Zeitpunkt, eine Datums- und Zeitspalte hat einen Datentyp datetime64[unit] und ein DatetimeIndex enthält Datums- und Zeitwerte als Zeilenbezeichnungen. NaT bezeichnet eine fehlende Zeitangabe. Mit pd.isna() erkennst du sie; die Subtraktion einer fehlenden Zeitangabe ergibt wieder einen fehlenden Wert.

Die Einheit in datetime64[us] sind Mikrosekunden, die Speicherauflösung. Zu den weiteren Einheiten gehören Sekunden (s), Millisekunden (ms) und Nanosekunden (ns). pandas 3 liest Text normalerweise mit Mikrosekundenauflösung ein und verwendet Nanosekunden, wenn der Text sie benötigt. Eine feinere Auflösung beansprucht mehr vom Wertebereich der Ganzzahlen: Datumswerte in Nanosekunden reichen nur von 1677 bis 2262.

Verstrichene Zeit berechnen
import pandas as pd
start = pd.Timestamp("2025-03-10 18:00")
end = pd.Timestamp("2025-03-14 09:30")
elapsed = end - start
hours = elapsed / pd.Timedelta(hours=1)

elapsed beträgt 3 Tage, 15 Stunden und 30 Minuten. Die drei Tage entsprechen 72 Stunden, also ist hours gleich 87,5. elapsed.total_seconds() ergibt 315.000. Das Attribut .days ergibt nur 3; es ist der Anteil ganzer Tage, nicht die vollständige Dauer in Tagen. Erstelle Zeitdauern mit pd.Timedelta(hours=36) oder lies mehrere mit pd.to_timedelta(["1h", "90min"]) ein.

Die Subtraktion eines Zeitstempels von einer ganzen Datums- und Zeitspalte ergibt zeilenweise Zeitdauern. Verwende .dt.days für die Anteile ganzer Tage oder dividiere die Zeitdauerspalte durch ein Timedelta mit der gewünschten Einheit, um vollständige Werte mit Bruchteilen zu erhalten.

Kalenderkomponenten auslesen und Zeiten runden

In einer Spalte lesen .dt.year, .dt.month, .dt.hour und .dt.quarter Kalenderkomponenten aus. .dt.day_of_week nummeriert Montag mit 0 bis Sonntag mit 6; .dt.day_name() gibt einen Namen zurück. Der 14. März 2025 ist ein Freitag mit der Nummer 4. Bei einem Index greifst du direkt auf diese Attribute zu: df.index.month. Die Schreibweisen day_of_week und day_of_year ersetzen ältere, in pandas 3.1 als veraltet markierte Schreibweisen.

Ein Wochentag kann zum Gruppierungsschlüssel werden: df.groupby(df["timestamp"].dt.day_name())["kwh"].mean(). Eine Gruppierung nach Monatsnummer fasst diesen Monat über mehrere Jahre zusammen; eine Monatsperiode hält die Jahre getrennt.

Für 09:37 Uhr ergibt .dt.floor("h") 09:00 Uhr, .dt.ceil("h") 10:00 Uhr und .dt.round("15min") 09:30 Uhr. .dt.normalize() setzt die Uhrzeiten auf Mitternacht und behält Datums- und Zeitwerte bei. .dt.date erzeugt stattdessen Python-Datumsobjekte und verliert die Funktionen einer Datums- und Zeitspalte.

Zahleneinheiten ausdrücklich festlegen

astype("int64") gibt die Anzahl in der Einheit der jeweiligen Spalte zurück. Die Anzahl in Mikrosekunden ist für denselben Zeitpunkt um den Faktor 1.000 kleiner als die Anzahl in Nanosekunden. Benötigt eine externe Rechnung Nanosekunden, verwende s.dt.as_unit("ns").astype("int64"); ein Timestamp oder Index verwendet direkt .as_unit("ns"). Für verstrichene Zeit vermeiden Timedelta-Rechnungen diese Einheitenfalle.

Wichtige Erkenntnisse

  • Ein Timestamp ist ein Zeitpunkt; ein Timedelta ist eine verstrichene Zeitdauer.
  • Verwende Timedeltas mit einer Einheit, um vollständige Zeitdauern einschließlich Bruchteilen zu erhalten.
  • Kalenderattribute werden bei Spalten über .dt und bei Indizes direkt aufgerufen.
  • Fehlende Zeitangaben sind NaT.
  • Ganzzahlige Datums- und Zeitzählwerte hängen von der Speicherauflösung ab.

1.2 Datumsangaben aus Text einlesen und für die Ausgabe formatieren

Beim Einlesen erhält Text eine Kalenderbedeutung. Kläre vor der Umwandlung einer Datumsspalte ihr Format und prüfe, ob sie Zeitverschiebungen, ungültige Einträge oder fehlende Werte enthält. ISO 8601 schreibt das Jahr zuerst, wie in „2025-03-14T09:30:00“, und vermeidet die Mehrdeutigkeit von Tag und Monat.

Das Quellformat angeben

„03/04/2025“ kann den 4. März oder den 3. April bedeuten. pd.to_datetime("03/04/2025") liest den Monat zuerst; dayfirst=True liest den Tag zuerst. Ein bekanntes Format ist eindeutiger:

raw = pd.Series(["14/03/2025 18:45", "15/03/2025 09:00"])
parsed = pd.to_datetime(raw, format="%d/%m/%Y %H:%M")

%Y steht für ein vierstelliges Jahr, %m für einen Monat und %d für einen Tag. %H bezeichnet eine Stunde im 24-Stunden-Format, %M eine Minute und %S eine Sekunde. Verwende %I mit %p für das 12-Stunden-Format und AM/PM. %b und %B lesen abgekürzte und ausgeschriebene Monatsnamen. Das große %M bedeutet Minuten und kann daher das kleine %m für Monate nicht ersetzen.

Ohne format ermittelt pandas ein Format anhand des ersten nicht fehlenden Eintrags und wendet es auf die Spalte an. Steht „03/04/2025“ zuerst, schlägt ein späteres „13/04/2025“ fehl, wenn der Monat an erster Stelle angenommen wird. Eine andere Reihenfolge der Zeilen kann das ermittelte Format ändern. format="ISO8601" verarbeitet ISO-Varianten. format="mixed" liest Einträge einzeln ein, kann aber eine mehrdeutige Konvention der Quelle nicht klären; bereinige oder prüfe diese Konvention zuerst.

Fehlgeschlagene Umwandlungen prüfen
raw = pd.Series(["2025-01-15", "not a date", None])
parsed = pd.to_datetime(raw, format="%Y-%m-%d", errors="coerce")
failed = parsed.isna() & raw.notna()

Das Ergebnis enthält den 15. Januar und zwei NaT-Werte. parsed.isna().sum() ist 2, weil der ursprünglich fehlende Eintrag mitgezählt wird. failed.sum() ist 1, weil nur „not a date“ vorhanden war und nicht eingelesen werden konnte. Prüfe raw[failed], bevor du entscheidest, ob du den Eintrag korrigierst oder entfernst. Die Fehlerersetzung lässt das Laden weiterlaufen, verbirgt aber auch Tippfehler wie einen unmöglichen Monat. Die Standardeinstellung errors="raise" stoppt bei ungültigen Eingaben; pandas 3 hat errors="ignore" entfernt.

Dateien und numerische Zeitstempel einlesen

pd.read_csv("meter.csv", parse_dates=["timestamp"], index_col="timestamp") fordert das Einlesen als Datums- und Zeitwerte und einen Zeitindex an. Prüfe nach dem Laden die entstandenen Datentypen. Textspalten verwenden in pandas 3 den Datentyp str; ältere Versionen zeigen häufig object an.

Verbinde getrennte Datums- und Zeitzeichenketten vor dem Einlesen mit einem Leerzeichen. Spalten mit den Namen year, month und day lassen sich direkt mit pd.to_datetime(df[["year", "month", "day"]]) zusammensetzen.

Gib bei Unix-Zählwerten die Einheit an. pd.to_datetime(1735689600, unit="s", utc=True) ergibt Mitternacht UTC am 1. Januar 2025. Die Anzahl in Millisekunden lautet 1735689600000 mit unit="ms". Eine falsche Einheit verändert den interpretierten Zeitpunkt.

Nur für die Darstellung formatieren

parsed.dt.strftime("%d %b %Y") schreibt Text wie „15 Jan 2025“. Die Methode .isoformat() eines Timestamps schreibt eine ISO-Zeichenkette. Monats- und Wochentagsnamen richten sich nach der Spracheinstellung des Systems; die angezeigten Beispiele verwenden Englisch. Behalte Datums- und Zeitwerte während der Analyse bei und formatiere sie beim Export, denn Zeichenketten unterstützen keine Datumsrechnungen mehr.

Wichtige Erkenntnisse

  • Bevorzuge eindeutige ISO-Datumsangaben, wenn du die Quelle bestimmen kannst.
  • Gib ein bekanntes Einleseformat ausdrücklich an.
  • Unterscheide ungültige Eingaben von bereits fehlenden Werten.
  • Ordne Unix-Zählwerten die passende Einheit Sekunden oder Millisekunden zu.
  • Formatiere erst am Ende der Analyse als Text.
  • %m bedeutet Monat; %M bedeutet Minute.
2

Daten nach Zeit indizieren, auswählen und vergleichen

Ein Zeitindex macht Datumsangaben als Zeilenbezeichnungen nutzbar. Vor einem Vergleich müssen die Bezeichnungen aber sorgfältig geprüft werden. Sortiere Beobachtungen, entscheide, was doppelte Zeitstempel bedeuten, und mache fehlende Datumsangaben sichtbar. Wähle dann Kalenderperioden oder wiederkehrende Tageszeitfenster aus und vergleiche Werte mit früheren Werten. Entscheidend ist der Unterschied zwischen Zeilenposition und tatsächlicher Zeit: Eine vorherige Zeile kann mehrere Tage zurückliegen, und zwei Zeitreihen werden anhand übereinstimmender Zeitstempel kombiniert.

2.1 Einen Zeitindex erstellen und prüfen

Ein brauchbarer Zeitindex ist eingelesen, geordnet und geprüft. Eine Tabelle kann mehrere Ereignisse zu einem Zeitpunkt, fehlende Tage oder ungeordnete Datenblöcke enthalten. Jede dieser Bedingungen verändert die Bedeutung späterer Berechnungen.

Datums- und Zeitwerte als Zeilenbezeichnungen erstellen
df["timestamp"] = pd.to_datetime(df["timestamp"], format="%Y-%m-%d %H:%M")
df = df.set_index("timestamp").sort_index()

set_index() verschiebt die Spalte in die Zeilenbezeichnungen; es liest keinen Text ein. Prüfe df.index.dtype auf einen Datums- und Zeittyp und df.index.is_monotonic_increasing auf chronologische Reihenfolge. Gleiche benachbarte Zeiten sind in einem steigenden Index zulässig, daher belegt diese Prüfung keine Eindeutigkeit.

Ein DatetimeIndex unterstützt die Auswahl nach Datum und Resampling. Textbezeichnungen werden nicht allein deshalb zu einem Zeitindex, weil sie wie Datumsangaben aussehen. Du kannst Zeitstempel auch in einer Spalte belassen: df.resample("D", on="timestamp") nutzt diese Spalte, ohne den Index zu ändern. Ein PeriodIndex ist eine weitere Darstellung für Zeitreihen, deren Zeilen Zeitspannen wie Monate beschreiben.

Entscheiden, was wiederholte Zeiten bedeuten

df.index.is_unique gibt an, ob jede Bezeichnung unterschiedlich ist. df.index.duplicated() markiert wiederholte Bezeichnungen nach dem ersten Auftreten. Angenommen, zwei Messwerte, 3 und 5, gehören zum 1. Januar und ein Messwert von 4 zum 2. Januar. Die Mittelwertbildung für doppelte Messwerte mit df.groupby(level=0).mean() ergibt an beiden Daten 4,0.

Diese Operation ist eine Entscheidung über die Daten. Stellen die Zeilen separate Käufe dar, kann Summieren angemessen sein. Hat ein Import einen Datensatz verdoppelt, kann es angemessen sein, mit df[~df.index.duplicated(keep="last")] die letzte Kopie zu behalten. Lösche keine gültigen Transaktionen allein deshalb, um einen eindeutigen Index zu erhalten. Operationen, die jeder Zielbezeichnung einen Wert zuordnen, darunter reindex() und asfreq(), benötigen eindeutige Quellbezeichnungen.

Gespeicherte und ermittelte Frequenz unterscheiden

Ein mit pd.date_range() erstellter Index trägt normalerweise .freq. Bei eingelesenen Zeitstempeln ist .freq häufig gleich None, selbst wenn sie auf aufeinanderfolgende Tage fallen. pd.infer_freq(df.index) untersucht mindestens drei Zeitstempel und gibt ein Kürzel wie „D“ oder „ME“ zurück, wenn es ein regelmäßiges Muster findet. Unregelmäßige Abstände ergeben None.

Frequenzmetadaten ersetzen keine Vollständigkeitsprüfung. Um fehlende tägliche Zeilen zu finden, erstelle den erwarteten Kalender:

calendar = pd.date_range(df.index.min(), df.index.max(), freq="D")
missing = calendar.difference(df.index)

Ein fehlender Tag hat keine Zeile. Er unterscheidet sich von einer vorhandenen Zeile mit NaN. Ein Kalender, der durch das beobachtete Minimum und Maximum begrenzt ist, kann keine fehlenden Daten außerhalb dieses Bereichs aufdecken; verwende den geplanten Beginn und das geplante Ende des Berichtszeitraums, wenn sie bekannt sind.

Auf spätere Operationen vorbereiten

Sortieren macht Slices vorhersehbar und ist für zeitbasierte gleitende Fenster erforderlich. Fehlende Zeilen sind auch dann relevant, wenn eine Berechnung gelingt: shift(1) bedeutet eine Zeile zurück und rolling(7) bedeutet sieben Zeilen. Keine der beiden Methoden prüft, ob jede Zeile einen Tag darstellt. Behalte bei einer langen Tabelle außerdem den Schlüssel der Zeitreihe, etwa Sensor oder Geschäft, damit spätere Operationen getrennt je Zeitreihe ausgeführt werden können.

Wichtige Erkenntnisse

  • Lies Datumsangaben ein, bevor du den Zeitindex setzt, und sortiere ihn.
  • Prüfe Reihenfolge und Eindeutigkeit getrennt.
  • Behandle doppelte Bezeichnungen entsprechend der Bedeutung ihrer Zeilen.
  • Vergleiche mit einem vollständigen Kalender, um fehlende Datumsangaben zu finden.

2.2 Zeilen nach Datum und Tageszeit auswählen

Sobald der Index sortierte Datums- und Zeitwerte enthält, sind Datumszeichenketten nützliche Auswahlmittel. Ihre Genauigkeit bestimmt, wie viel Zeit sie darstellen: ein Jahr, einen Monat, einen Tag oder eine bestimmte Minute.

Eine ganze Kalenderperiode auswählen

Für tägliche Daten von Januar bis März 2025 wählt ts.loc["2025"] alle 90 Tage aus. ts.loc["2025-02"] wählt die 28 Tage des Februars aus. Bei stündlichen Daten wählt eine Tageszeichenkette den ganzen Tag aus, nicht nur Mitternacht.

Verwende .loc auch bei einem DataFrame:

february = df.loc["2025-02", "kwh"]
spring_onward = df.loc["2025-03-01":]

df["2025-02"] fragt dagegen eine Spalte mit diesem Namen ab. Ein Zeitindex macht die Spaltenauswahl mit eckigen Klammern nicht zur Zeilenauswahl.

Den Endpunkt genau lesen

Ein bezeichnungsbasierter Slice schließt beide Endpunkte ein. ts.loc["2025-01-30":"2025-02-02"] umfasst den 30. und 31. Januar sowie den 1. und 2. Februar. Ein positionsbasierter Slice wie ts.iloc[0:4] endet vor Position 4.

Das Ende eines Slices mit unvollständiger Datumszeichenkette umfasst die gesamte benannte Periode. Bei stündlichen Daten schließt df.loc[:"2025-06-01"] den ganzen 1. Juni ein. df.loc[:"2025-06-01 00:00"] endet um Mitternacht. Ebenso schließt ein Slice, der mit „2025-02“ endet, den ganzen Februar ein. Eine genauere Zeichenkette verändert die Grenze, schreibe den Endpunkt also passend zur Fragestellung.

ts.truncate(before="2025-03-01") behält alles ab dem 1. März. Das Argument after= schneidet das andere Ende ab. Vorheriges Sortieren vermeidet Fehler, die auftreten können, wenn Slices mit Datumszeichenketten auf ungeordnete Bezeichnungen treffen.

Wiederkehrende Kalenderbedingungen auswählen

Kalenderattribute erzeugen boolesche Masken:

weekends = df[df.index.day_of_week >= 5]
evening_march = df[(df.index.month == 3) & (df.index.hour >= 18)]

Montag ist 0, Samstag und Sonntag sind also 5 und 6. Jede Bedingung benötigt Klammern, wenn sie mit & oder | verbunden wird. Verwende bei einer Datums- und Zeitspalte df["timestamp"].dt.day_of_week statt eines Indexattributs. Die Wochentagsmaske wählt ein wiederkehrendes Kalendermuster aus; das unterscheidet sich von der Auswahl eines zusammenhängenden Datumsintervalls.

Ein Tageszeitfenster für jedes Datum auswählen

df.between_time("09:00", "17:00") wählt diese Stunden an jedem Tag aus. Standardmäßig sind beide Enden eingeschlossen, sodass ein vollständiger Tag mit stündlichen Daten neun Zeilen ergibt. inclusive="left" schließt 09:00 Uhr ein und 17:00 Uhr aus und ergibt acht Zeilen. df.at_time("12:00") wählt jeden Tag genau 12:00 Uhr aus.

Ein Tageszeitfenster kann über Mitternacht reichen. between_time("22:00", "06:00") wählt späte Abend- und frühe Morgenzeilen über den ganzen Index aus. Es wählt kein einzelnes zusammenhängendes Intervall zwischen zwei bestimmten Daten aus. Bei einem Index mit Zeitzoneninformation nutzt die Auswahl mit Datumszeichenketten die lokale Zeitzone des Index; rechne den Index um, bevor du einen Berichtstag in einer anderen Zeitzone auswählst.

Wichtige Erkenntnisse

  • Eine unvollständige Datumszeichenkette wählt ihre ganze Periode aus.
  • Bezeichnungsbasierte Slices schließen den Endpunkt ein; positionsbasierte Slices schließen die Endposition aus.
  • Verwende .loc für die Datumsauswahl in einem DataFrame.
  • Kalenderbasierte Masken und Tageszeitfenster wählen wiederkehrende Muster aus.
  • Prüfe vor dem Filtern die Genauigkeit des Endpunkts und die Zeitzone.

2.3 Werte im Zeitverlauf anhand von Verschiebungen, Differenzen und prozentualen Änderungen vergleichen

Eine Änderung braucht einen klaren Vergleichspunkt. „Vorherig“ kann die vorherige beobachtete Zeile, den vorherigen Kalendertag oder denselben Monat ein Jahr zuvor bedeuten. Wähle diese Bedeutung, bevor du eine Verzögerung oder Wachstumsrate berechnest.

Frühere Werte neben aktuelle setzen

Für die Besucherzahlen 200, 210 und 189 vom 3. bis 5. März ergibt s.shift(1) die Werte NaN, 200 und 210. Es verschiebt Werte um eine Zeile nach unten und behält die Bezeichnungen bei. Die neue erste Stelle fehlt, weil keine frühere Beobachtung vorhanden ist. shift(-1) ergibt 210, 189 und NaN: ein Vorlauf, der den nächsten Wert in die aktuelle Zeile holt.

df["previous"] = df["visitors"].shift(1)
df["change"] = df["visitors"].diff()
df["growth"] = df["visitors"].pct_change()

diff() subtrahiert den vorhergehenden Wert und ergibt NaN, 10 und −21. pct_change() dividiert den aktuellen Wert durch den vorherigen und subtrahiert 1. Das ergibt NaN, 0,05 und −0,10. Dies sind Anteile: 0,05 bedeutet 5 %, nicht 0,05 %. Gleitkommaausgaben können winzige zusätzliche Stellen enthalten; runde nach der Berechnung für die Anzeige.

Die Verzögerung in Zeilen oder Zeit wählen

pct_change(7) vergleicht mit dem Wert sieben Zeilen zuvor. Das ist nur dann derselbe Wochentag eine Woche zuvor, wenn lückenlos genau eine Zeile pro Tag vorhanden ist. Bei einer vollständigen monatlichen Zeitreihe ergibt pct_change(12) die Änderung gegenüber dem Vorjahr.

shift(1, freq="D") verschiebt die Zeitstempel um einen Tag nach vorn und lässt die Werte an den verschobenen Bezeichnungen. Es behält jeden Wert bei. Rechnungen mit dem Original richten die Werte dann anhand des Datums aus:

previous_day = s.shift(1, freq="D")
daily_change = s - previous_day

Enthält die Quelle nur am Montag und Donnerstag Beobachtungen, vergleicht ein einfaches shift(1) den Donnerstag mit dem Montag. Eine Datumsverschiebung ermöglicht einen Vergleich mit Mittwoch; fehlt der Mittwoch, fehlt die tägliche Änderung für Donnerstag. Das Füllen dieser Lücke ist eine separate Entscheidung über die Daten.

Beachten, dass Rechnungen Bezeichnungen ausrichten

Zwei Series werden anhand der Zeitstempel kombiniert, nicht anhand der Zeilenposition. Addiere die Werte 200, 210 und 189 am 3., 4. und 5. März zu den Werten 1 und 1 am 4. und 7. März. Nur am 4. März liegen zwei Beobachtungen vor, sodass die Summe 211 beträgt. Die Vereinigung der Daten umfasst den 3., 4., 5. und 7. März; die übrigen Ergebnisse fehlen.

Verwende s.add(other, fill_value=0), wenn eine fehlende Beobachtung tatsächlich null bedeutet, etwa bei einer überprüften Ereignisanzahl. Es ist keine allgemeine Korrektur für fehlende Sensormesswerte.

Vergleiche je Zeitreihe neu beginnen

Sortiere eine lange Tabelle nach ihrem Zeitreihenschlüssel und Datum und berechne dann innerhalb der Gruppen. df.groupby("store")["sales"].pct_change() vergleicht jedes Geschäft nur mit sich selbst. Verkauft Geschäft A für 100 und dann 110 und Geschäft B für 50 und dann 40, lauten die Wachstumsraten: fehlend, 0,10, fehlend und −0,20. Eine einfache spaltenweite Berechnung würde den ersten Verkauf von B mit dem letzten Verkauf von A vergleichen. Dieses numerische Ergebnis würde einen Geschäftswechsel beschreiben, kein Wachstum im Zeitverlauf.

Wichtige Erkenntnisse

  • Eine Verzögerung verschiebt frühere Werte neben spätere.
  • pct_change() gibt einen Anteil zurück; multipliziere ihn mit 100, um einen Prozentsatz anzugeben.
  • Zeilenverschiebungen und Datumsverschiebungen beantworten unterschiedliche Fragen.
  • Rechnungen richten Zeitstempel aus, keine Positionen.
  • Berechne Änderungen getrennt innerhalb jeder Zeitreihe.
3

Datumsfolgen erzeugen und Frequenzen, Offsets und Perioden nutzen

Kalenderregeln machen wiederkehrende Arbeit mit Datumsangaben zuverlässig. Erzeuge eine vollständige Datumsfolge anhand einer Frequenz, verschiebe auf das nächste Monatsende oder den nächsten Geschäftstag und bezeichne ganze Monate oder Quartale mit Perioden. Jede Darstellung beantwortet eine andere Frage: Eine Zeitdauer zählt verstrichene Zeit, ein Offset folgt einer Kalenderregel und eine Periode bezeichnet eine Zeitspanne. Achte auf Ankerpunkte und Endpunkte, um Fehler um eins und Verwechslungen bei Geschäftsjahren zu vermeiden.

3.1 Regelmäßige Datumsfolgen mit Frequenzkürzeln erstellen

Eine regelmäßige Datumsfolge ist ein Kalender, den du erzeugen kannst, statt jede Bezeichnung einzutippen. Sie kann Testdaten bezeichnen, ein erwartetes Berichtsraster festlegen oder nach einer Neuindizierung fehlende Beobachtungen sichtbar machen.

Anfang und Regel angeben
ends = pd.date_range("2025-01-01", periods=4, freq="ME")

Die vier Zeitstempel sind der 31. Januar, 28. Februar, 31. März und 30. April. „ME“ bedeutet Monatsende, also ist das erste Datum das erste Monatsende am oder nach dem Anfang. Eine regelmäßige Frequenz kann einer Kalenderregel folgen, auch wenn die verstrichenen Abstände unterschiedlich lang sind.

Gib normalerweise zwei der Angaben start, end und periods sowie freq an. Ohne ausdrückliche Frequenz gilt standardmäßig ein Kalendertag. periods zählt Zeitstempel, nicht Abstände: Vier stündliche Zeitstempel enthalten drei Abstände.

Häufige Kürzel lesen
RegelKürzelBeispiel
Kalender- oder GeschäftstagD, BTägliche Daten oder Daten von Montag bis Freitag
Woche mit AnkertagW, W-MONSonntage oder Montage
MonatsgrenzeMS, MEErster oder letzter Kalendertag
QuartalsgrenzeQS, QEQuartalsanfang oder -ende
JahresgrenzeYS, YEJahresanfang oder -ende
Festes Zeitintervallh, min, s, msStunden bis Millisekunden

Vielfache drücken größere Abstände aus: „15min“, „2h“ und „90min“. Beginnst du um 08:00 Uhr mit vier Perioden zu „90min“, erhältst du 08:00, 09:30, 11:00 und 12:30 Uhr. „1h30min“ drückt denselben Abstand aus.

Frequenzen für Zeitstempel verwenden in pandas 3 „ME“, „QE“, „YE“, „BME“, „h“, „min“, „s“, „ms“ und „us“. Die älteren Kürzel „M“, „Q“, „Y“ oder „A“, „BM“, „H“, „T“, „S“, „L“ und „U“ funktionieren bei diesen Zeitstempeloperationen nicht mehr. Monatsperioden verwenden weiterhin „M“, weil eine Periode eine Zeitspanne beschreibt.

Ankerpunkte und Geschäftstage beachten

Eine kalendergebundene Datumsfolge nimmt den angegebenen Anfang nicht zwingend in ihre Ausgabe auf. Beginnst du am 15. Januar 2025 mit freq="MS", erhältst du zuerst den 1. Februar. Im Januar 2025 ergibt „W-MON“ den 6., 13., 20. und 27. Januar; ein einfaches „W“ ergibt Sonntage. „WOM-3FRI“ bedeutet den dritten Freitag jedes Monats.

„B“ überspringt Wochenenden, kennt aber keine lokalen Feiertage. Der März 2025 enthält 21 Tage von Montag bis Freitag. Ein benutzerdefinierter Kalender kann einen angegebenen Feiertag ausschließen:

pd.bdate_range("2025-03-01", "2025-03-31",
               freq="C", holidays=["2025-03-17"])

Diese Datumsfolge enthält 20 Daten. Die Feiertagsliste wird ausdrücklich angegeben; aus Zeitzone oder Sprache wird kein Land abgeleitet.

Endpunkte sorgfältig zählen

Passende Anfangs- und Endpunkte sind standardmäßig eingeschlossen. Stündlich von Mitternacht am 1. Januar bis Mitternacht am 2. Januar ergibt 25 Zeitstempel. Verwende periods=24 für genau 24 stündliche Messwerte oder inclusive="left", um das Ende auszuschließen. normalize=True setzt die Uhrzeit von Anfang und Ende auf Mitternacht. Ergänze tz="Asia/Tokyo", wenn die erzeugten Bezeichnungen eine Zeitzone tragen sollen.

Wichtige Erkenntnisse

  • Frequenzkürzel drücken Zeitintervalle oder Kalenderankerpunkte aus.
  • Eine kalendergebundene Datumsfolge beginnt beim ersten passenden Datum.
  • Bei Geschäftstagsfolgen müssen Feiertage ausdrücklich angegeben werden.
  • Zähle Zeitstempel und prüfe die Einbeziehung der Endpunkte getrennt.
  • Verwende für Zeitstempelfrequenzen die aktuellen Kürzel von pandas 3.

3.2 Datumswerte mit kalenderbezogenen Offsets verschieben

„Einen Monat später“ ist eine Kalenderanweisung. „Dreißig Tage später“ ist eine verstrichene Zeitdauer. Die Ergebnisse können sich unterscheiden, weil Monate und Jahre nicht alle dieselbe Anzahl von Tagen haben.

Zeitdauer und Kalenderverschiebung unterscheiden

Ein Timedelta addiert eine feste verstrichene Zeitdauer. Ein DateOffset folgt Kalenderfeldern. Ausgehend vom 31. Januar 2025:

t = pd.Timestamp("2025-01-31")
t + pd.DateOffset(months=1)   # February 28
t + pd.Timedelta(days=30)    # March 2

Beim DateOffset verschiebst du zunächst in den Februar und behältst dann den Tag 31 bei, falls er existiert. Das ist nicht der Fall, daher begrenzt pandas auf den letzten gültigen Tag im Februar. Vom 31. Januar 2024 aus ist das Ergebnis der 29. Februar, weil es ein Schaltjahr ist. pd.Timedelta(months=1) ist ungültig: Ein Monat hat keine einheitliche feste Dauer.

Derselbe Unterschied gilt für Jahre. Vom 1. Januar 2024 aus enden 365 verstrichene Tage am 31. Dezember 2024. pd.DateOffset(years=1) endet am 1. Januar 2025. Verwende die in der eigentlichen Frage genannte Einheit, statt sie durch eine bequeme Anzahl von Tagen zu ersetzen.

Zu einem Kalenderankerpunkt verschieben

pd.offsets.MonthEnd(1) verschiebt auf das nächste Monatsende. Vom 15. Januar 2025 aus ergibt sich der 31. Januar. Vom 31. Januar aus ergibt sich der 28. Februar. Die Anzahl eins bedeutet, zum nächsten Ankerpunkt vorzugehen, daher wird auch ein bereits passendes Datum verschoben.

MonthEnd(0) verschiebt ein Datum auf das Ende seines aktuellen Monats, lässt ein bestehendes Monatsende aber unverändert. Das ist nützlich, um jede Beobachtung mit dem Ende ihres Monats zu bezeichnen:

month_labels = df.index + pd.offsets.MonthEnd(0)

Ein Offset hat außerdem rollforward() und rollback(). Für den 15. Januar ist der nächste MonthEnd-Ankerpunkt nach vorn der 31. Januar und der nächste nach hinten der 31. Dezember 2024. Diese Operationen wählen den nächsten gültigen Ankerpunkt in einer Richtung.

Über Geschäftstage verschieben

Der 14. März 2025 ist ein Freitag. Die Addition von pd.offsets.BDay(1) ergibt Montag, den 17. März. Die Addition eines verstrichenen Tages ergibt Samstag, den 15. März. Eine standardmäßige Geschäftstagsregel überspringt Wochenenden; für Feiertage ist ein ausdrücklich angegebener benutzerdefinierter Kalender nötig.

Frequenzzeichenketten sind Kurznamen für Offset-Objekte: „ME“ entspricht MonthEnd, „B“ BusinessDay und „W-MON“ einer auf Montag verankerten Woche. So lässt sich dieselbe Kalenderbedeutung für eine Datumsfolge, eine Resampling-Regel oder eine Datumsverschiebung nutzen.

Die gewünschte Uhrzeit über die Sommerzeitumstellung hinweg behalten

In pandas 3 bedeutet pd.offsets.Day(1) einen Kalendertag und behält die lokale Uhrzeit bei. pd.Timedelta(days=1) addiert genau 24 Stunden. Vom 29. März 2025 um 12:00 Uhr in Amsterdam aus endet der Kalenderoffset am 30. März um 12:00 Uhr, nach nur 23 verstrichenen Stunden. Das Timedelta endet um 13:00 Uhr. Ein wiederkehrender lokaler Termin und eine gemessene Gerätelaufzeit benötigen daher unterschiedliche Operationen.

Wichtige Erkenntnisse

  • Monate und Jahre sind Kalenderregeln, keine festen Zeitdauern.
  • Ein Monats-Offset begrenzt auf den letzten gültigen Tag des Zielmonats.
  • MonthEnd(1) verschiebt ein bestehendes Monatsende weiter; MonthEnd(0) behält es bei.
  • Geschäftstags-Offsets überspringen Wochenenden.
  • Ein Kalendertag und 24 verstrichene Stunden können sich unterscheiden.

3.3 Mit ganzen Monaten, Quartalen und Geschäftsjahren als Perioden arbeiten

Eine monatliche Umsatzsumme gehört zu einem ganzen Monat. Sie lässt sich mit einem einzelnen Zeitstempel bezeichnen, doch eine Period gibt ihre Zeitspanne direkt an. Eine Period kombiniert einen Wert mit einer Frequenz, sodass „2025-03“ mit der Frequenz „M“ den gesamten März 2025 bedeutet.

Zeitspannen darstellen und verschieben
march = pd.Period("2025-03", freq="M")
months = pd.period_range("2025-01", "2025-04", freq="M")

months ist ein PeriodIndex mit vier Elementen und dem Datentyp period[M]. Die start_time des März ist Mitternacht am 1. März; seine end_time ist bei Mikrosekundenauflösung der 31. März um 23:59:59.999999. Das Ende ist der letzte Zeitpunkt, nicht Mitternacht zu Beginn des letzten Tages.

Periodenrechnungen verschieben in der eigenen Einheit der Periode. march + 1 ist April 2025. Juni minus März mit monatlicher Frequenz ergibt einen Offset von drei Monatsenden, dessen .n gleich 3 ist. Eine Monatsperiode kennt auch .days_in_month: Der Februar 2025 hat 28 Tage.

Zeitpunkte in Zeitspannen und zurück umwandeln
monthly_labels = df.index.to_period("M")
column_labels = df["date"].dt.to_period("M")
start_labels = monthly_labels.to_timestamp()
end_labels = monthly_labels.to_timestamp(how="end")

Jeder Zeitstempel im März wird derselben Monatsperiode zugeordnet. Die Rückumwandlung dieser Periode ergibt standardmäßig ihren Anfang oder auf Wunsch ihr Ende. Der ursprüngliche Tag und die ursprüngliche Uhrzeit einer Beobachtung werden dadurch nicht wiederhergestellt: Die Umwandlung in eine Periode hat diese Details verworfen.

Halte die Kürzelfamilien auseinander. Eine monatliche Zeitspanne verwendet „M“ in Period und period_range. Ein Zeitstempel für ein Monatsende verwendet „ME“ in date_range und beim Resampling von Datums- und Zeitwerten. Die beiden Namen beschreiben unterschiedliche Arten von Bezeichnungen.

Die Frequenz einer Periode ändern

Die Methode .asfreq() einer Periode wählt eine umfassende oder enthaltene Periode mit einer anderen Frequenz aus. march.asfreq("D", how="start") ergibt den 1. März als Tagesperiode; how="end" ergibt den 31. März. Eine mit how="start" in „M“ umgewandelte Jahresperiode ergibt den Januar.

Dies wählt eine Periode an der Grenze aus; eine Monatssumme wird dadurch nicht auf Tage aufgeteilt. Bei einer Series mit PeriodIndex kann Resampling monatliche zu vierteljährlichen Zeitspannen aggregieren. Die Anzahlen der Tage in jedem Monat des Jahres 2025 ergeben die Quartalssummen 90, 91, 92 und 92.

Geschäftsjahresquartale lesen

Ein Geschäftsjahresquartal wird innerhalb eines Geschäftsjahres benannt, dessen Endmonat ausdrücklich angegeben ist. Bei „Q-JUN“ endet das Geschäftsjahr 2025 im Juni 2025. Sein erstes Quartal läuft daher von Juli bis September 2024:

q = pd.Period("2025Q1", freq="Q-JUN")

Bei „Q-MAR“ fällt der 10. Mai 2025 in 2026Q1, weil dieses Geschäftsjahr im März 2026 endet. Das Jahr in einer Geschäftsjahresbezeichnung muss nicht mit dem Kalenderjahr ihres ersten Tages übereinstimmen. Für Zeitstempelfilter ist es oft klarer, Zeiten vor dem Beginn der nächsten Periode auszuwählen, als den letzten Sekundenbruchteil der aktuellen Periode zu konstruieren.

Wichtige Erkenntnisse

  • Perioden beschreiben Zeitspannen und werden in ihrer eigenen Frequenzeinheit verschoben.
  • Die Umwandlung in eine Periode verwirft genauere Zeitstempeldetails.
  • Frequenzkürzel für Perioden und Zeitstempel unterscheiden sich.
  • Geschäftsjahre werden nach ihrem Endjahr bezeichnet.
4

Die Frequenz einer Zeitreihe durch Resampling ändern

Eine Frequenzänderung verändert die Frage an die Beobachtungen. Detaillierte Messwerte können zu Tagessummen oder Monatsmittelwerten werden; eine dünn besetzte Zeitreihe kann in ein feineres Raster mit leeren Stellen umgewandelt werden. Wähle Aggregationen und Auffüllmethoden nach der Bedeutung der Werte und prüfe anschließend die Grenzen der Zeitintervalle. Enthält eine Tabelle mehrere Geschäfte oder Sensoren, behalte deren Kennungen bei der Gruppierung bei, damit die entstehenden Verläufe getrennt bleiben.

4.1 Zeitreihen durch Downsampling zu Summen, Mittelwerten und anderen Kennwerten verdichten

Resampling beantwortet Fragen wie „Wie viel Energie wurde täglich verbraucht?“ oder „Wie hoch war die durchschnittliche Temperatur in jedem Monat?“. Es gruppiert Beobachtungen in Zeitintervalle und wendet anschließend eine Aggregation an.

Einen zur Größe passenden Kennwert wählen
daily = df.resample("D").agg({"kwh": "sum", "temp_c": "mean"})

Energie in kWh und Niederschlag in mm addieren sich über die Zeit. Temperatur beschreibt einen Zustand, daher ist ein Mittelwert aussagekräftiger als eine Summe. last() eignet sich für einen Schlusskontostand, während max() einen Höchstwert findet. Tägliche Verkäufe lassen sich für den monatlichen Gesamtverkauf summieren oder für den durchschnittlichen Verkauf pro beobachtetem Tag mitteln; die Frage entscheidet.

resample() gibt zunächst einen Resampler zurück, bis du eine Aggregation wie sum(), mean(), count() oder agg() aufrufst. Verwende on="date", wenn die Datums- und Zeitwerte in einer Spalte statt im Index stehen.

Kalenderintervalle und unvollständige Abdeckung lesen

Eine tägliche Zeitreihe aus Einsen vom 1. Januar bis zum 30. April 2025 ergibt mit resample("ME").sum() die Monatssummen 31, 28, 31 und 30. „MS“ ergibt dieselben Monatssummen mit den Monatsanfängen als Bezeichnungen. Resampling auf Quartalsenden ergibt 90 für Januar bis März und 30 für ein zweites Quartal, das nur April enthält. Eine Bezeichnung mit dem 30. Juni belegt nicht, dass Mai und Juni beobachtet wurden.

Wöchentliche „W“-Intervalle enden am Sonntag. Tägliche Werte von 1 bis 14 ab Montag, dem 3. März, ergeben 28 für die mit dem 9. März bezeichnete Woche und 77 für die mit dem 16. März bezeichnete Woche. „W-MON“ endet am Montag; das erste Intervall enthält dann nur den 3. März. Lies den Wochentag des Ankerpunkts, bevor du eine Bezeichnung als Wochenanfang interpretierst.

Zugehörigkeit und Bezeichnung unterscheiden

closed steuert, welche Grenze zu einem Intervall gehört. label steuert den Zeitstempel, der beim Ergebnis ausgegeben wird. Bei den meisten Regeln, darunter „5min“, „h“, „D“ und „MS“, ist beides standardmäßig „left“.

Die Werte 0 bis 9, einer pro Minute ab 00:00 Uhr, ergeben zwei standardmäßige Fünf-Minuten-Summen: 10 mit der Bezeichnung 00:00 und 35 mit der Bezeichnung 00:05. Das erste Intervall enthält 00:00 bis 00:04 Uhr. Mit closed="right", label="right" lauten die Ergebnisse 0 um 00:00 Uhr, 15 um 00:05 Uhr und 30 um 00:10 Uhr. Das mittlere Intervall enthält 00:01 bis 00:05 Uhr. Wird nur die Bezeichnung geändert, ändert sich die Zugehörigkeit nicht.

Endregeln wie „ME“, „QE“, „YE“, „W“ und „BME“ sind standardmäßig rechts abgeschlossen und rechts bezeichnet. Intervalle fester Länge beginnen normalerweise um Mitternacht des ersten Tages, sodass 15-Minuten-Grenzen bei 00:00, 00:15 Uhr und so weiter liegen.

Leere Intervalle von tatsächlichen Nullen unterscheiden

Für einen leeren Tag ist sum() gleich 0, count() gleich 0 und mean() gleich NaN. Verwende sum(min_count=1), damit der Wert fehlt, wenn kein Messwert verfügbar ist. Ein erfasster Nullwert und ein fehlender Messwert bleiben dann unterscheidbar.

Für mehrere Kennwerte einer Zeitreihe liefert .ohlc() Eröffnung, Hoch, Tief und Schluss: den ersten, größten, kleinsten und letzten beobachteten Wert in jedem Intervall. Die Messwerte 10, 12 und 11 ergeben Eröffnung 10, Hoch 12, Tief 10 und Schluss 11. Eröffnung und Schluss hängen von der zeitlichen Reihenfolge ab, nicht von der numerischen Größe.

Wichtige Erkenntnisse

  • Wähle Aggregationen nach der Bedeutung der Werte.
  • closed legt die Zugehörigkeit fest; label legt die angezeigte Zeit fest.
  • Wochenbezeichnungen nennen normalerweise den letzten Tag der Woche.
  • Prüfe unvollständige erste und letzte Intervalle.
  • sum(min_count=1) erhält leere Intervalle als fehlend.
  • OHLC bezeichnet den ersten, größten, kleinsten und letzten Wert.

4.2 Eine Zeitreihe durch Upsampling verfeinern und Lücken füllen

Ein feineres Raster erzeugt Stellen, keine Messungen. Entscheide vor dem Auffüllen, ob jeder Wert einen Zustand, eine Anzahl, eine stetige Messgröße oder eine Summe über eine Zeitspanne darstellt.

Die neuen Stellen sichtbar machen
s = pd.Series([10.0, 16.0],
              index=pd.to_datetime(["2025-06-01", "2025-06-04"]))
daily = s.asfreq("D")

Das tägliche Ergebnis lautet 10, NaN, NaN, 16. s.resample("D").asfreq() ergibt hier dasselbe Raster. Werte bleiben bei passenden Zeitstempeln erhalten; die neuen Daten enthalten keine ursprüngliche Beobachtung.

Der Bedeutung entsprechend auffüllen
MethodeErgebnis vom 1. bis 4. JuniPassende Bedeutung
ffill()10, 10, 10, 16Ein Zustand gilt bis zur Änderung
bfill()10, 16, 16, 16Ein späterer Wert wird für frühere Stellen genutzt
interpolate()10, 12, 14, 16Die Änderung wird entlang einer Geraden geschätzt

Eine Thermostateinstellung gilt, bis sie jemand ändert, daher ist Vorwärtsauffüllen nützlich. Ein sich stetig ändernder Wasserstand kann Interpolation rechtfertigen. Null eignet sich für eine Ereignisanzahl nur, wenn der fehlende Eintrag bedeutet, dass kein Ereignis stattfand. Ein Sensorausfall belegt keinen Messwert von null.

Das Interpolationsbeispiel verwendet ein regelmäßiges Tagesraster. Die gesamte Änderung beträgt 6 über drei Schritte von jeweils einem Tag, also kommen bei jedem Schritt 2 hinzu. Die beiden inneren Werte sind Schätzungen, keine neu gewonnenen Messungen.

Rückwärtsauffüllen nutzt Informationen aus der Zukunft. Es kann nicht beschreiben, was eine beobachtende Person zu jedem früheren Zeitpunkt wusste. Vorwärtsauffüllen respektiert diese Zeitrichtung, aber bei langen Lücken kann ein übernommener Zustand dennoch veralten. daily.ffill(limit=1) füllt eine Stelle nach einem Messwert und ergibt in diesem Beispiel 10, 10, NaN, 16.

Ausdrückliche Berichtsgrenzen verwenden

asfreq("D") reicht vom ersten bis zum letzten Quellzeitstempel. Indiziere neu, wenn der Kalender weiter reichen muss:

calendar = pd.date_range("2025-06-01", "2025-06-05", freq="D")
complete = s.reindex(calendar)

Der 5. Juni ist nun ebenfalls sichtbar. fill_value=0 füllt bei der Neuindizierung neu erzeugte Bezeichnungen und ist damit für überprüfte Tage ohne Ereignisse nützlich. Bereits in der Quelle vorhandene fehlende Werte werden dadurch nicht ersetzt. Sowohl die Neuindizierung als auch asfreq() benötigen eindeutige Quellbezeichnungen.

Auswahl und Aggregation unterscheiden

asfreq() wählt Werte zu Zielzeitstempeln aus. Es fasst die dazwischenliegenden Beobachtungen nicht zusammen. Bei 48 stündlichen Werten von 0 bis 47 wählt asfreq("D") die Mitternachtsmesswerte 0 und 24 aus. resample("D").sum() ergibt dagegen 276 und 852, indem jeder Stundenwert des jeweiligen Tages addiert wird.

Eine Monatssumme kann nicht auf jeden Tag vorwärts aufgefüllt und danach summiert werden: Das würde dieselbe Summe wiederholt zählen. Für eine gleichmäßige Aufteilung auf die Tage muss durch die Anzahl der Tage des Monats dividiert werden. Das ist eine Annahme zur Aufteilung und unterscheidet sich von der Übernahme eines Zustands oder der Schätzung einer stetigen Messgröße.

Wichtige Erkenntnisse

  • Ein feineres Raster fügt leere Stellen hinzu, keine Beobachtungen.
  • Wähle das Auffüllen nach der Bedeutung der Größe und der Zeitrichtung.
  • Begrenze das Auffüllen, wenn lange Lücken sichtbar bleiben sollen.
  • asfreq() wählt Zeitpunkte aus; Resampling mit Aggregation fasst Intervalle zusammen.

4.3 Mehrere Zeitreihen gruppenweise gleichzeitig durch Resampling umwandeln

Eine lange Tabelle kann viele Zeitreihen in einer Wertespalte enthalten. Ein Geschäftsschlüssel unterscheidet Geschäfte, ein Sensorschlüssel unterscheidet Sensoren. Gruppiere nach dieser Kennung und nach Zeit, wenn die Frage für jede Zeitreihe einen separaten Verlauf verlangt.

Einen Zeitreihenschlüssel mit einer Zeitregel kombinieren
monthly = df.groupby([
    "store", pd.Grouper(key="date", freq="ME")
])["sales"].sum()

pd.Grouper setzt eine Zeitintervallregel innerhalb von groupby ein. key= benennt eine Datums- und Zeitspalte; level= kann eine Datums- und Zeitindexebene benennen. Das Ergebnis hat eine Indexebene für das Geschäft und eine weitere für das Monatsende. Durch die Auswahl der numerischen Spalte konzentriert sich die Aggregation auf den Umsatz.

Angenommen, Geschäft A erzielt am 5. Januar einen Umsatz von 100, am 20. Januar von 150 und am 3. Februar von 120. Geschäft B erzielt am 11. Januar 80, am 14. Februar 90 und am 25. Februar 60. Das gruppierte Ergebnis lautet für A: Januar 250, Februar 120; für B: Januar 80, Februar 150. Resampling der ganzen Tabelle ohne Geschäftsschlüssel würde die Geschäfte zu Januar 330 und Februar 270 zusammenfassen.

Innerhalb jeder Gruppe Resampling durchführen

Eine zweite Form macht zuerst das Datum zum Index:

monthly = (df.set_index("date")
             .groupby("store")["sales"]
             .resample("ME").sum())

Sie erzeugt dieselben Summen für beobachtete Kombinationen aus Geschäft und Monat. Die beiden Formen unterscheiden sich, wenn ein Geschäft in einem dazwischenliegenden Monat keine Zeilen hat. Erscheint A nur im Januar und März, erzeugt gruppenweises Resampling zwischen dem ersten und letzten Datum von A ein Februarintervall; ein gewöhnliches sum() ergibt dort null. Die Gruppierung nach Geschäft und einem Grouper behält die Kombinationen, die Zeilen enthalten, sodass die Februar-Kombination von A fehlt.

Eine fehlende Kombination, ein als null zusammengefasstes leeres Intervall und eine fehlende Messung sind unterschiedliche Datenzustände. Entscheide, welchen der Bericht zeigen soll. Verwende ausdrückliche Neuindizierung, wenn alle Geschäfte einen Kalender teilen sollen, der über ihren beobachteten Zeitraum hinausreicht. Verwende min_count=1 bei einer Summe, wenn ein leeres Intervall fehlend bleiben soll.

Für den Vergleich umformen

monthly.unstack("store") verschiebt die Geschäftsebene in Spalten und belässt die Monate in Zeilen. Im Beispiel hat Januar A = 250 und B = 80; Februar hat A = 120 und B = 150. Eine fehlende Kombination aus Geschäft und Monat wird zu NaN; unstack("store", fill_value=0) ersetzt fehlende Kombinationen durch null, wenn diese Bedeutung passt.

Jahre bei Bedarf getrennt halten

Ein zeitbasierter Grouper mit „ME“ hält Januar 2024 und Januar 2025 getrennt. Die Gruppierung nach df["date"].dt.month behält nur Monatsnummern und fasst beide Januarmonate zusammen. Die erste Form beantwortet „Was geschah jeden Monat?“. Die zweite unterstützt einen saisonalen Vergleich wie den durchschnittlichen Januarumsatz über mehrere Jahre. Die Wahl hängt davon ab, welche zeitliche Zuordnung erhalten bleiben muss.

Wichtige Erkenntnisse

  • Gruppiere nach Zeitreihenkennung und Zeit, um getrennte Verläufe zu erhalten.
  • Gruppenweises Resampling und ein zeitbasierter Grouper unterscheiden sich bei leeren Monaten.
  • unstack() erleichtert den Vergleich von Zeitreihen in Spalten.
  • Monatsnummern fassen Jahre zusammen; monatliche Zeitintervalle halten sie getrennt.
5

Daten mit gleitenden und wachsenden Fenstern glätten und zusammenfassen

Fensterkennwerte beschreiben, wie sich eine Zeitreihe verändert, ohne sie auf eine einzige Gesamtzahl zu reduzieren. Eine gleitende Berechnung folgt jüngsten Zeilen oder einer jüngsten Zeitspanne, eine wachsende Berechnung behält den bisherigen Verlauf bei und ein exponentiell gewichteter Mittelwert bevorzugt neuere Beobachtungen zunehmend. Untersuche, welche Werte in jedes Ergebnis eingehen, wie fehlende Daten es beeinflussen und wo das Ergebnis bezeichnet wird. Diese Entscheidungen bestimmen, was ein geglätteter Wert aussagen kann.

5.1 Gleitende Kennwerte über eine feste Anzahl von Zeilen berechnen

Ein gleitendes Fenster fasst wiederholt eine sich verschiebende Gruppe von Zeilen zusammen. Bei jeder neuen Zeile kommt der aktuelle Wert hinzu und irgendwann fällt der älteste heraus. Die Fensterlänge steuert, wie stark kurzfristige Schwankungen geglättet werden.

Ein Fenster nach dem anderen betrachten

Für die Werte 4, 8, 6, 10 und 12:

s = pd.Series([4, 8, 6, 10, 12])
s.rolling(3).mean()

Das erste vollständige Fenster ist [4, 8, 6] mit der Summe 18 und dem Mittelwert 6. Das nächste ist [8, 6, 10] mit dem Mittelwert 8. Das letzte ist [6, 10, 12] mit dem Mittelwert etwa 9,333. Die Standardergebnisse sind NaN, NaN, 6, 8 und 9,333, weil die ersten beiden Zeilen noch keine drei Beobachtungen haben.

Datenanforderungen und Platzierung steuern

min_periods legt die erforderliche Anzahl nicht fehlender Werte fest. Bei einem Fenster mit fester Zeilenanzahl entspricht der Standardwert der vollständigen Fenstergröße. Mit min_periods=1 verwenden die frühen Mittelwerte erst einen und dann zwei Werte: 4 und 6. Wegen ihrer kleineren Stichproben sind sie weniger stabil als die späteren Mittelwerte aus drei Werten.

Fehlende Werte belegen weiterhin Zeilenpositionen. In [4, NaN, 6, 10, 12] hat ein Fenster mit drei Zeilen, das den fehlenden Wert enthält, nur zwei gültige Beobachtungen. min_periods=2 erlaubt den Mittelwert von [4, NaN, 6], der 5 beträgt; die Standardeinstellung erlaubt ihn nicht.

Ergebnisse gehören normalerweise zur letzten Zeile des Fensters. Mit center=True erscheinen dieselben drei Mittelwerte vollständiger Fenster in den mittleren Zeilen und ergeben NaN, 6, 8, 9,333, NaN. Ein zentrierter Wert nutzt spätere Beobachtungen relativ zu seiner Bezeichnung. Verwende rückwärtsgerichtete Fenster, um zu beschreiben, was zu jedem Zeitpunkt bekannt war.

Mehr als den Mittelwert zusammenfassen

Dieselben Fenster unterstützen sum(), max(), min() und std(). pandas verwendet standardmäßig die Stichprobenstandardabweichung: [4, 8, 6] hat die Standardabweichung 2. Eine eigene Funktion kann eine Spannweite berechnen:

s.rolling(3).apply(lambda v: v.max() - v.min(), raw=True)

Die Spannweiten der vollständigen Fenster sind 4, 4 und 6. raw=True übergibt Arraywerte an die Funktion. Zwei ausgerichtete Zeitreihen können ebenfalls ein Fenster teilen: a.rolling(3).corr(b) misst die Korrelation über die letzten drei gepaarten Beobachtungen, sodass der Zusammenhang im Zeitverlauf variieren kann.

Eine sinnvolle Länge und Gruppierung wählen

Bei genau einer vollständigen täglichen Zeile pro Tag enthält ein Mittelwert über sieben Zeilen jeden Wochentag einmal und mittelt eine feste wiederkehrende Wochentagskomponente heraus. Ein Mittelwert über zwölf Zeilen bewirkt bei vollständigen Monatsdaten dasselbe für eine feste Jahreskomponente. Längere Fenster glätten stärker, reagieren aber später auf Wendungen; ein rückwärtsgerichteter Mittelwert über n Zeilen hat ungefähr ein halbes Fenster Verzögerung, etwa (n − 1) / 2 Zeilen.

Zeilen sind keine Tage. Sieben Messwerte mit Lücken können mehr als eine Woche umfassen. Verwende ein Zeitfenster, wenn die Frage eine verstrichene Zeitspanne nennt. Sortiere in einer langen Tabelle jede Zeitreihe zeitlich und führe Fenster innerhalb ihrer Gruppe aus: df.groupby("store")["sales"].rolling(2).sum(). So verhinderst du, dass ein Fenster von den Daten eines Geschäfts in die eines anderen übergeht.

Wichtige Erkenntnisse

  • Ein Zeilenfenster zählt Zeilen, einschließlich Positionen mit fehlenden Werten.
  • min_periods zählt gültige Beobachtungen.
  • Zentrierte Fenster enthalten spätere Werte relativ zu ihren Bezeichnungen.
  • Längere Fenster glätten stärker und reagieren langsamer.
  • Wende Fenster getrennt innerhalb jeder Zeitreihe an.
  • Gleitende Methoden können neben dem Niveau auch Streuung und Zusammenhänge zusammenfassen.

5.2 Zeitbasierte Fenster für unregelmäßig erfasste Daten nutzen

Für unregelmäßige Ereignisse eignen sich zeitlich definierte Fenster. „Bestellungen in den vergangenen drei Tagen“ sollte dieselbe Dauer umfassen, auch wenn es an einem Tag viele und am nächsten keine Bestellungen gibt.

Ein Fenster nach verstrichener Zeit definieren
s = pd.Series([5, 3, 4, 6], index=pd.to_datetime([
    "2025-05-01", "2025-05-02", "2025-05-05", "2025-05-06"
]))
s.rolling("3D").sum()

Die Ergebnisse sind 5, 8, 4 und 10. Anders als rolling(3) definiert die Zeichenkette „3D“ eine Zeitspanne von drei Tagen. Die Anzahl der Zeilen innerhalb dieser Spanne kann variieren. Sortiere zuerst den DatetimeIndex; Zeitfenster benötigen monoton steigende Zeiten. Ein DataFrame kann mit on="date" eine sortierte Datums- und Zeitspalte verwenden.

Die Grenze vor dem Addieren prüfen

Standardmäßig schließt das Fenster den aktuellen Zeitpunkt ein und den Zeitpunkt genau drei Tage zuvor aus. Um Mitternacht am 5. Mai reicht das Intervall von unmittelbar nach Mitternacht am 2. Mai bis einschließlich Mitternacht am 5. Mai. Der Messwert vom 2. Mai liegt genau auf der ausgeschlossenen Grenze, sodass nur der Wert 4 vom 5. Mai eingeht.

Am 6. Mai beginnt das Fenster unmittelbar nach dem 3. Mai und enthält die Werte 4 und 6 mit der Summe 10. Mit closed="both" schließt das Fenster des 5. Mai auch den 2. Mai ein und ergibt die Summe 7. Die Wahl der Grenze kann ein Ergebnis verändern, selbst wenn Daten und Dauer gleich bleiben.

Ein Fenster mit zwei Zeilen ergibt für diese Zeitreihe NaN, 8, 7 und 10. Am 5. Mai enthält es die vorherige Zeile vom 2. Mai. Das beantwortet „die letzten zwei Messwerte“, eine andere Frage als „die letzten drei Tage“.

Eine Mindestanzahl an Beobachtungen festlegen

Für min_periods eines Zeitfensters gilt standardmäßig 1. Die erste Beobachtung kann daher sofort ein Ergebnis liefern. s.rolling("3D").count() ergibt 1, 2, 1 und 2 Messwerte und zeigt, auf wie vielen Werten das Ergebnis jeweils beruht. Ein Mittelwert aus einem Messwert und ein Mittelwert aus vielen Messwerten sind beide gültige Berechnungen, beruhen aber auf unterschiedlich vielen Daten.

Mit min_periods=2 lauten die Summen NaN, 8, NaN, 10. Die Dauer hat sich nicht geändert; die Berechnung verlangt nun mindestens zwei nicht fehlende Beobachtungen innerhalb dieser Zeitspanne. Ein größeres Zeitintervall garantiert für sich genommen keine zusätzlichen Beobachtungen.

Feste Längen verwenden und Zeitreihen trennen

Zeitbasierte gleitende Fenster benötigen eine feste Dauer wie „30min“, „24h“ oder „7D“. Eine Monatsendregel wie „1ME“ hat eine variable Länge und kann diese Art von Fenster nicht definieren. Verwende eine angegebene feste Länge wie „30D“, wenn das die beabsichtigte Regel ist, oder aggregiere zuerst in monatliche Intervalle, wenn die Frage Kalendermonate betrifft.

Für getrennte Kundenverläufe hält df.groupby("customer").rolling("30D", on="date")["amount"].sum() die Transaktionen jedes Kunden zusammen. Die Zeiten müssen innerhalb jedes Kunden geordnet sein. Das Ergebnis fügt den Gruppenschlüssel als Indexebene hinzu, sodass erhalten bleibt, welche Zeitreihe jedes Fenster beschreibt.

Wichtige Erkenntnisse

  • Zeitfenster wählen nach Dauer aus und können unterschiedlich viele Zeilen enthalten.
  • Standardmäßig ist die linke Grenze ausgeschlossen und der aktuelle Zeitpunkt eingeschlossen.
  • Für min_periods eines Zeitfensters gilt standardmäßig 1.
  • Kalendermonate können nicht als feste Dauer gleitender Fenster dienen.

5.3 Kumulative Summen, kumulative Maxima und exponentiell gewichtete Mittelwerte verfolgen

Manche Fragen benötigen den gesamten bisherigen Verlauf: „Wie viel hat sich angesammelt?“ oder „Was ist der bisher höchste Wert?“. Andere sollen jüngere Beobachtungen bevorzugen, ohne die Vergangenheit abrupt zu verwerfen. Wachsende und exponentiell gewichtete Berechnungen dienen diesen unterschiedlichen Zielen.

Den Verlauf Zeile für Zeile erweitern

Für die Werte 4, 8, 6, 10 und 12 ergibt s.expanding().mean() die Werte 4, 6, 6, 7 und 8. Das vierte Ergebnis berücksichtigt alle vier Werte: Ihre Summe ist 28 und ihr Mittelwert 7. expanding().sum() ergibt 4, 12, 18, 28 und 40, genau wie cumsum() bei dieser vollständigen Zeitreihe. expanding().max() ergibt 4, 8, 8, 10 und 12, genau wie cummax().

Wachsende Fenster verlangen standardmäßig eine Beobachtung. Sie behalten jede frühere Beobachtung mit gleichem Gewicht bei. Gegen Ende einer langen Zeitreihe trägt ein neuer Wert nur einen kleinen Teil zum bisherigen Verlauf bei, daher reagiert ein kumulativer Mittelwert langsam.

Kumulative Summen können an einer Grenze neu beginnen:

ytd = df.groupby(df.index.year)["sales"].cumsum()
by_store = df.groupby("store")["sales"].cumsum()

Sortiere innerhalb des jeweiligen Verlaufs, bevor du kumulierst. Eine einfache kumulative Summe über abwechselnde Geschäfte vermischt diese.

Den Abstand unter einem kumulativen Maximum messen

Für 100, 120, 90, 110 und 130 ergibt cummax() die Werte 100, 120, 120, 120 und 130. Berechne den Drawdown mit s / s.cummax() - 1. Bei 90 ist der frühere Höchstwert von 120 der Bezugswert, daher beträgt der Drawdown −0,25, also 25 % unter dem Höchstwert. Ein Vergleich von 90 mit dem ersten Wert 100 würde eine andere Frage beantworten. Ein neuer Höchstwert hat den Drawdown null.

Jüngere Werte stärker gewichten

Ein exponentiell gewichteter gleitender Mittelwert, kurz EWMA, verringert das Gewicht älterer Werte um einen konstanten Faktor. Für den Glättungsfaktor gilt α=2/(span+1), sodass span=3 den Wert 0,5 ergibt. Für adjust=False lautet die Aktualisierung:

yt=αxt+(1−α)yt−1

Dabei ist xt die neue Beobachtung, yt−1 der vorherige geglättete Wert und yt das aktualisierte Ergebnis. Der erste geglättete Wert entspricht der ersten Beobachtung. Danach erhält jeder neue Wert das Gewicht 0,5 und der vorherige geglättete Wert das Gewicht 0,5:

s.ewm(span=3, adjust=False).mean()

Für 4, 8, 6, 10 und 12 lauten die Ergebnisse 4, 6, 6, 8 und 10. Die letzte Aktualisierung mittelt die neue Beobachtung 12 und den vorherigen geglätteten Wert 8. Sie mittelt nicht nur die beiden jüngsten Rohwerte.

Die Einstellung für die Anpassung lesen

Die Standardeinstellung adjust=True normiert anhand der Summe der verfügbaren Gewichte. Für dieselben Daten lauten die frühen Ergebnisse 4; etwa 6,667; 6,286; 8,267 und 10,194. Dies ist eine andere Anfangsberechnung als die rekursive Form; der Unterschied nimmt ab, je mehr Verlauf verfügbar ist.

Wähle ein Argument für die Gewichtsabnahme: span, alpha, com oder halflife. Ein EWMA hat keinen festen Endpunkt, an dem eine alte Zeile plötzlich verschwindet. Ein gleitender Mittelwert hat diesen Endpunkt, während ein wachsender Mittelwert alle früheren Werte gleich gewichtet behält. Wähle danach, wie viel Einfluss jüngste Änderungen haben sollen.

Wichtige Erkenntnisse

  • Wachsende Fenster berücksichtigen bis zu jeder Zeile den gesamten bisherigen Verlauf.
  • Gruppiere kumulative Berechnungen, wenn Verläufe neu beginnen müssen.
  • Der Drawdown vergleicht einen Wert mit seinem kumulativen Maximum.
  • Die EWMA-Gewichte nehmen mit dem Alter allmählich ab.
  • adjust=False nutzt den vorherigen geglätteten Wert für die rekursive Aktualisierung.
  • Die standardmäßige Anpassung verändert frühe gewichtete Mittelwerte.
6

Zeitzonen und Sommerzeit berücksichtigen

Eine lokale Uhrzeit bezeichnet nur dann einen Zeitpunkt, wenn ihre Zeitzone bekannt ist. Ordne die Zeitzone der Erfassung zu, rechne tatsächliche Zeitpunkte zwischen Zeitzonen um und halte Berechnungen in UTC ausgerichtet. Lokale Berichte benötigen dann die richtigen Kalendergrenzen, einschließlich der Stunden, die bei Sommerzeitumstellungen übersprungen oder wiederholt werden. Die Unterscheidung zwischen Lokalisierung und Umrechnung ermöglicht es, Einträge aus mehreren Orten zu kombinieren, ohne ihre Bedeutung unbemerkt zu verschieben.

6.1 Zeitstempeln Zeitzonen zuordnen und zwischen Zeitzonen umrechnen

Eine Uhrzeit benötigt einen Ort, um einen Zeitpunkt festzulegen. „2025-07-01 09:00“ ist ein Zeitstempel ohne Zeitzoneninformation. Durch das Hinzufügen von „Europe/Amsterdam“ erhält er Zeitzoneninformation: Im Juli hat er die Zeitverschiebung +02:00 und steht für 07:00 Uhr UTC. UTC ist die gemeinsame Zeitreferenz und kennt keine Sommerzeitumstellungen.

Die Zeitzone der Erfassung zuordnen
local = pd.Timestamp("2025-07-01 09:00")
aware = local.tz_localize("Europe/Amsterdam")

tz_localize() behält 09:00 Uhr bei und ordnet die Bedeutung der Zeitzone zu. Verwende den Ort, an dem die Uhrzeit erfasst wurde. Würde dieselbe Uhrzeit als UTC bezeichnet, beschriebe sie in diesem Beispiel einen anderen Zeitpunkt, zwei Stunden später.

Verwende IANA-Namen wie „Europe/Amsterdam“, „America/New_York“ und „Asia/Kolkata“. Benannte regionale Zeitzonen bewahren historische Zeitverschiebungen und Sommerzeitregeln. Eine feste Verschiebung von +01:00 tut das nicht. Kurze Namen sind uneinheitlich: „EST“ ist auf −05:00 festgelegt, während „CET“ saisonalen Änderungen folgt. pandas 3 verwendet die Python-Darstellung zoneinfo.

Einen bereits festgelegten Zeitpunkt umrechnen

aware.tz_convert("UTC") ergibt 07:00 Uhr UTC. Die Umrechnung desselben Zeitpunkts ergibt am 1. Juli für New York 03:00 Uhr, für Kolkata 12:30 Uhr, für Tokio 16:00 Uhr und für Sydney 17:00 Uhr. Die Uhrzeit ändert sich, der tatsächliche Zeitpunkt bleibt gleich.

OperationErforderliche EingabeWas gleich bleibt
tz_localize(zone)Zeit ohne ZeitzoneninformationLokale Uhrzeit
tz_convert(zone)Zeit mit ZeitzoneninformationTatsächlicher Zeitpunkt

Die Umrechnung eines Werts ohne Zeitzoneninformation löst einen Fehler aus, weil keine Ausgangszeitzone bekannt ist. Auch die Lokalisierung eines Werts mit Zeitzoneninformation löst einen Fehler aus; verwende dafür die Umrechnung. Verwende für Spalten .dt.tz_localize() und .dt.tz_convert(). Bei Indizes verwendest du die Methoden direkt oder die auf den Index bezogenen Methoden des DataFrames.

Text mit Zeitverschiebungen einlesen und Zeitzonen kombinieren

Ein „Z“ am Ende eines ISO-Textes bedeutet UTC. Lies Text mit unterschiedlichen Zeitverschiebungen mit utc=True ein:

raw = pd.Series(["2025-03-01 10:00+01:00",
                 "2025-04-01 10:00+02:00"])
common = pd.to_datetime(raw, utc=True)

Diese Werte werden zu 09:00 und 08:00 Uhr UTC. Rechne sie anschließend für lokale Berichte in eine regionale Zeitzone um. Das Einlesen gemischter Zeitverschiebungen ohne utc=True löst in pandas 3 einen Fehler aus.

Zwei Series mit Zeitzoneninformation werden anhand tatsächlicher Zeitpunkte ausgerichtet, selbst wenn ihre Zeitzonenbezeichnungen unterschiedlich sind. Amsterdamer Messwerte um 09:00 und 10:00 Uhr und Londoner Messwerte um 08:00 und 09:00 Uhr im Juli beziehen sich auf übereinstimmende Zeitpunkte. Ihr Rechenergebnis verwendet UTC-Bezeichnungen. Ordnungsvergleiche zwischen Zeitstempeln ohne und mit Zeitzoneninformation schlagen fehl; der Gleichheitsvergleich ergibt falsch.

Eine Zeitzone bewusst entfernen

tz_convert(None) drückt einen Wert mit Zeitzoneninformation zuerst in UTC aus und entfernt dann die Zeitzone. Aus 09:00 Uhr in Amsterdam werden im Juli 07:00 Uhr ohne Zeitzoneninformation. tz_localize(None) entfernt die Zeitzone und behält 09:00 Uhr ohne Zeitzoneninformation bei. Dies sind unterschiedliche Ausgaben. Bewahre Berechnungsdaten mit Zeitzoneninformation in UTC auf und rechne sie vor Berichten oder der Gruppierung nach einem lokalen Tag um.

Wichtige Erkenntnisse

  • Lokalisiere Uhrzeiten ohne Zeitzoneninformation in der Zeitzone ihrer Erfassung.
  • Rechne Zeitstempel mit Zeitzoneninformation um, um denselben Zeitpunkt anderswo anzuzeigen.
  • Regionale IANA-Namen bewahren Sommerzeitregeln.
  • Lies gemischte Zeitverschiebungen in eine gemeinsame UTC-Darstellung ein.
  • Beim Entfernen einer Zeitzone kann die UTC-Zeit oder die lokale Uhrzeit erhalten bleiben.

6.2 Sommerzeit in Zeitreihen berücksichtigen

Lokale Uhren können eine Stunde überspringen oder wiederholen. Diese Umstellungen beeinflussen das Einlesen, verstrichene Zeitdauern und Tagessummen. Benannte Zeitzonen ermöglichen pandas, die tatsächlichen Zeitpunkte hinter lokalen Uhrzeiten zu unterscheiden.

Eine übersprungene Ortszeit erkennen

Amsterdam stellte am 30. März 2025 von 02:00 auf 03:00 Uhr vor. Die Uhrzeit 02:30 Uhr kam nie vor. Ihre Lokalisierung ohne Regel löst einen Fehler aus:

pd.Timestamp("2025-03-30 02:30").tz_localize(
    "Europe/Amsterdam", nonexistent="shift_forward"
)

Das Ergebnis ist 03:00+02:00, die erste gültige Zeit nach der Lücke. nonexistent="NaT" hält das Problem als fehlenden Wert fest. "shift_backward" verschiebt auf den letzten gültigen Zeitpunkt vor der Lücke. Das Verschieben eines Datensatzes ändert seinen Zeitstempel, bewahre daher die ursprüngliche Eingabe auf und dokumentiere die gewählte Regel in der Analyse.

Zwei wiederholte Uhrzeiten unterscheiden

Am 26. Oktober 2025 stellte Amsterdam von 03:00 auf 02:00 Uhr zurück. Die lokale Uhrzeit 02:30 Uhr trat einmal mit der Zeitverschiebung +02:00 und einmal mit +01:00 auf. In UTC liegen sie eine Stunde auseinander.

ambiguous=True wählt das Auftreten in der Sommerzeit; ambiguous=False wählt die Normalzeit. ambiguous="NaT" markiert eine ungeklärte Uhrzeit als fehlend. Eine boolesche Liste kann die Wahl je Zeile treffen. ambiguous="infer" kann eine geordnete Folge mit der wiederholten Stunde nutzen, etwa 01:30, 02:00, 02:30, 02:00, 02:30, 03:00. Eine einzelne wiederholte Uhrzeit liefert nicht genügend Hinweise aus der Reihenfolge, um das gemeinte Auftreten zu ermitteln.

Stunden im lokalen Tag zählen

Der Tag der Frühjahrsumstellung hat 23 Stunden und der Tag der Herbstumstellung 25. Eine vollständige stündliche Zeitreihe hat daher beim Resampling auf lokale Tage unterschiedliche Anzahlen. Um den durchschnittlichen stündlichen Energieverbrauch anzugeben, dividiere eine Tagessumme durch die tatsächliche Anzahl gültiger Stundenmesswerte oder bilde deren Mittelwert. Jede Summe durch 24 zu dividieren, stellt die Umstellungstage falsch dar.

Auch ein unvollständiger Datensatz kann verkürzte Intervalle erzeugen. Eine UTC-Zeitreihe, die am 29. März um 00:00 Uhr beginnt, beginnt in Amsterdam um 01:00 Uhr, sodass ihrem ersten lokalen Tag schon vor dem Umstellungstag Mitternacht fehlt. Prüfe sowohl die Berichtsgrenzen als auch die Zeitzonenregeln.

Gleiche Uhrzeit und gleiche verstrichene Zeit unterscheiden
t = pd.Timestamp("2025-03-29 12:00", tz="Europe/Amsterdam")
t + pd.offsets.Day(1)       # March 30 at 12:00
t + pd.Timedelta(days=1)    # March 30 at 13:00

Der Kalenderoffset behält 12:00 Uhr bei und überbrückt nur 23 verstrichene Stunden. Das Timedelta addiert 24 Stunden. Im Herbst kann ein lokaler Kalendertag dagegen 25 verstrichene Stunden enthalten.

Vor dem Gruppieren die Berichtszeitzone wählen

Resampling folgt der Zeitzone des Index. Um den Verbrauch nach Amsterdamer Ortsdatum zu summieren, rechne zuerst einen UTC-Index mit Zeitzoneninformation in „Europe/Amsterdam“ um und führe dann Resampling auf „D“ durch. Resampling zuerst in UTC erzeugt andere Tagesgrenzen, die sich nicht allein durch eine neue Bezeichnung des Ergebnisses korrigieren lassen.

Umstellungsdaten unterscheiden sich je nach Region: New York stellte 2025 am 9. März und 2. November um; in Sydney endete die Sommerzeit am 6. April und begann am 5. Oktober. Tokio und Kolkata haben keine Sommerzeitumstellungen. Bewahre Rohzeitpunkte in UTC auf und verwende für Kalenderberichte die benannte lokale Zeitzone.

Wichtige Erkenntnisse

  • Übersprungene und wiederholte Stunden benötigen ausdrückliche Lokalisierungsregeln.
  • Eine mehrdeutige Ortszeit kann sich auf zwei verschiedene UTC-Zeitpunkte beziehen.
  • Vollständige lokale Tage können 23 oder 25 Stunden enthalten.
  • Rechne vor der Gruppierung nach lokalem Tag in die Berichtszeitzone um.
  • Unterscheide Zeitumstellungen von unvollständiger Datenabdeckung.

Zeitreihen mit pandas: Beispiele

6 Interaktive Lektionen

1

Ein Textprotokoll in nutzbare Datumswerte umwandeln

11 Schritte
Ein kleines Protokoll einlesen, Fehler prüfen und Zeitdauern berechnen, ohne die Zeiteinheiten zu verlieren.
  1. 1
    EinführungMit einer Datumsspalte beginnen

    Ein Zählerprotokoll enthält Datumsangaben als Text. Du benötigst Datumswerte, die pandas vergleichen kann, die verstrichene Zeit zwischen Einträgen und lesbare Bezeichnungen für einen Bericht. Das bedeutet einen Timestamp für jeden Zeitpunkt, ein Timedelta für die verstrichene Zeit und formatierten Text erst am Ende.

    Gehe die Umwandlung vor der Berechnung durch. Eine Zeichenkette kann wie ein Datum aussehen, ohne sich wie ein Kalenderdatum zu verhalten, und ein mehrdeutiges Format kann ein plausibles Datum mit falscher Bedeutung ergeben.

  2. 2
    BeispielDie Konvention der Quelle lesen

    Das Protokoll dokumentiert Datumsangaben mit dem Tag an erster Stelle und eine 24-Stunden-Uhr. Ein Eintrag lautet „14/03/2025 18:45“. Sein Format ist:

    format="%d/%m/%Y %H:%M"
    

    Lies die Codes der Reihe nach: Tag, Monat, Jahr, Stunde und Minute. %m und %M unterscheiden sich in der Groß- und Kleinschreibung, weil sie verschiedene Felder darstellen. Das Datum ist der 14. März, die Uhrzeit 18:45 Uhr.

  3. 3
    ErklärungEin bekanntes Format anwenden

    Wandle die Spalte mit dem dokumentierten Format um:

    parsed = pd.to_datetime(raw,
        format="%d/%m/%Y %H:%M", errors="coerce")
    

    Das Format gilt für jeden nicht fehlenden Eintrag. Die Fehlerersetzung wandelt ungültige Eingaben in NaT um. Ohne bekanntes Format ermittelt pandas es anhand der ersten nicht fehlenden Zeile; dadurch kann eine Quelle mit mehrdeutigen Datumsangaben mit Schrägstrichen falsch interpretiert werden.

  4. 4
    HerausforderungTatsächliche Fehler zählen

    Eine Spalte enthält „14/03/2025 18:45“, „bad“ und None. Nach der Fehlerersetzung sind zwei Ergebnisse NaT. Wie viele vorhandene Werte konnten nicht eingelesen werden und welche Maske findet sie?

    ---reveal---

    Ein vorhandener Wert konnte nicht eingelesen werden: „bad“. Verwende parsed.isna() & raw.notna(). Das ursprüngliche None fehlte bereits. Würdest du jedes NaT zählen, würdest du die Anzahl fehlgeschlagener Umwandlungen überschätzen.

  5. 5
    ErklärungZeitpunkte und Zeitdauern erkennen

    Ein Timestamp stellt einen Zeitpunkt dar und eine Datums- und Zeitspalte enthält viele Zeitpunkte. Ein Timedelta stellt verstrichene Zeit dar.

    Subtrahiere einen Anfangs-Timestamp von einem End-Timestamp, um eine Zeitdauer zu erhalten. Addiere ein Timedelta, um einen Zeitpunkt um eine feste Dauer zu verschieben. NaT markiert fehlende Zeitangaben, sodass Rechnungen mit einem fehlenden Anfang oder Ende ebenfalls eine fehlende Zeitdauer ergeben.

  6. 6
    BeispielDie beiden Zeitpunkte subtrahieren

    Nimm diese Zeitstempel:

    start = pd.Timestamp("2025-03-10 18:00")
    end = pd.Timestamp("2025-03-14 09:30")
    elapsed = end - start
    

    Das Ergebnis sind 3 Tage und 15:30 Stunden. Zähle zuerst die drei ganzen Tage und dann die verbleibenden 15 Stunden 30 Minuten. Behältst du das Ergebnis als Timedelta bei, kannst du im nächsten Schritt die gewünschte Berichtseinheit wählen, ohne den Rest zu verwerfen.

  7. 7
    BeispielDie vollständige Zeitdauer in Stunden umwandeln

    Drei Tage entsprechen 72 Stunden. Der Rest beträgt 15,5 Stunden, sodass die Gesamtdauer 87,5 Stunden beträgt.

    hours = elapsed / pd.Timedelta(hours=1)
    

    elapsed.days ergibt nur 3. Es beschreibt den Anteil ganzer Tage; würdest du diesen Anteil mit 24 multiplizieren, gingen 15,5 Stunden verloren. total_seconds() ergibt 315.000 und berücksichtigt ebenfalls die vollständige Zeitdauer.

  8. 8
    HerausforderungEine nützliche Kalenderkomponente wählen

    Ein Bericht benötigt die durchschnittlichen kWh nach Wochentag über viele Wochen. Welche Kalenderkomponente kann den Gruppierungsschlüssel liefern und benötigt eine Spalte .dt?

    ---reveal---

    Verwende df["timestamp"].dt.day_name() als Gruppierungsschlüssel und bilde dann den Mittelwert von kwh. Eine Datums- und Zeitspalte benötigt .dt; ein DatetimeIndex stellt day_name() direkt bereit. Dies gruppiert wiederkehrende Wochentage, keine getrennten Kalenderdaten.

  9. 9
    TippEinheiten vor dem Export als Ganzzahl prüfen

    Ein Datums- und Zeittyp wie datetime64[us] speichert Zählwerte in Mikrosekunden. Eine direkte Umwandlung in Ganzzahlen gibt diese Zählwerte zurück, selbst wenn älterer Code Nanosekunden erwartet.

    Fordere für eine Spalte ausdrücklich s.dt.as_unit("ns").astype("int64") an, wenn Zählwerte in Nanosekunden benötigt werden. Behalte für Zeitdauervergleiche Timedelta-Rechnungen bei, damit die Einheit beim Wert bleibt.

  10. 10
    HerausforderungDen abschließenden Bericht vorbereiten

    Du hast Datumsangaben eingelesen und verstrichene Stunden berechnet. Der Bericht benötigt Datumsangaben wie „14 Mar 2025“. Solltest du die Datumsspalte vor dem Rechnen formatieren und welcher Ausdruck erzeugt die Bezeichnung?

    ---reveal---

    Schließe zuerst die Datums- und Zeitrechnungen ab und verwende dann parsed.dt.strftime("%d %b %Y") für Anzeigebezeichnungen. Die Formatierung gibt Text zurück. Der abgekürzte Monatsname richtet sich nach der Spracheinstellung des Systems; dieses Beispiel verwendet Englisch.

  11. 11
    ZusammenfassungDie Darstellung nach dem Zweck wählen

    Verwende Datums- und Zeitwerte für die Auswahl nach Kalenderangaben und für Rechnungen, Timedeltas für verstrichene Zeitdauern und formatierte Zeichenketten für abschließende Bezeichnungen. Beim Einlesen erhalten die Konventionen der Quelle eine Kalenderbedeutung.

    Prüfe fehlgeschlagene nicht fehlende Eingaben, den Datentyp und gegebenenfalls benötigte Ausgabeeinheiten, bevor du eine umgewandelte Spalte weitergibst. So hat die spätere Analyse eine klare Zeitdarstellung als Grundlage.

2

Einen bereinigten Verlauf erstellen und die richtigen Daten vergleichen

13 Schritte
Einen Ereignisindex prüfen, Berichtsintervalle auswählen und Zeilenverschiebungen von Kalendervergleichen unterscheiden.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungJeder Zeile eine klare zeitliche Zuordnung geben
  2. 2
    BeispielEinlesen, indizieren und sortieren
  3. 3
    TippWiederholte Ereignisse nach ihrer Bedeutung behandeln
  4. 4
    HerausforderungEin fehlendes Datum sichtbar machen
  5. 5
    ErklärungDie Genauigkeit einer Auswahl lesen
  6. 6
    HerausforderungEin wiederkehrendes Arbeitszeitfenster auswählen
  7. 7
    BeispielDen Vorgänger neben jeden Wert setzen
  8. 8
    KernaussageEine relative Änderung ist keine Prozentangabe
  9. 9
    ErklärungDaten für einen Kalendervergleich verschieben
  10. 10
    HerausforderungDie Ausrichtung anhand von Bezeichnungen nachvollziehen
  11. 11
    VerbindungDen Vorgänger jedes Geschäfts getrennt halten
  12. 12
    HerausforderungEinen Bericht zum täglichen Wachstum korrigieren
  13. 13
    ZusammenfassungBezeichnungen vor der Interpretation von Änderungen prüfen
3

Kalender erstellen und vollständige Zeitspannen bezeichnen

12 Schritte
Datumsfolgen erzeugen, Kalenderdaten verschieben und Periodenbezeichnungen einschließlich Geschäftsjahresquartalen interpretieren.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungEntscheiden, was ein Datum darstellen soll
  2. 2
    BeispielMonatsenddaten erzeugen
  3. 3
    TippDas Kürzel passend zum Kalender wählen
  4. 4
    HerausforderungDie Endpunkte einer Datumsfolge zählen
  5. 5
    BeispielVom 31. Januar um einen Monat verschieben
  6. 6
    ErklärungEinen bereits erreichten Ankerpunkt verstehen
  7. 7
    HerausforderungGeschäftszeit oder verstrichene Zeit wählen
  8. 8
    ErklärungMonatssummen mit Zeitspannen bezeichnen
  9. 9
    BeispielEin Datum in einen Monat und zurück umwandeln
  10. 10
    HerausforderungEine Geschäftsjahresbezeichnung lesen
  11. 11
    HerausforderungMonatliche Zeitpunkte oder monatliche Zeitspannen wählen
  12. 12
    ZusammenfassungDie Bedeutung durch die Kalenderregel ausdrücken
4

Tages- und Monatsberichte aus Beobachtungen erstellen

13 Schritte
Aggregationen wählen, Intervallgrenzen nachvollziehen, ein feineres Raster füllen und separate Zeitreihen gruppiert halten.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungFragen, was die neue Frequenz bedeuten soll
  2. 2
    BeispielZwei Größen unterschiedlich aggregieren
  3. 3
    ErklärungEin Fünf-Minuten-Intervall nachvollziehen
  4. 4
    HerausforderungDie Beobachtung auf der Grenze verschieben
  5. 5
    TippLeere und unvollständige Intervalle prüfen
  6. 6
    BeispielEin feineres Tagesraster erstellen
  7. 7
    BeispielEine Lücke auf drei Arten füllen
  8. 8
    HerausforderungDas Bekannte bewahren
  9. 9
    KernaussageEin ausgewählter Zeitpunkt ist keine Summe
  10. 10
    BeispielGeschäfte in eigenen Intervallen halten
  11. 11
    HerausforderungEinen leeren Monat für ein Geschäft erklären
  12. 12
    HerausforderungEine Vergleichstabelle korrigieren
  13. 13
    ZusammenfassungLesen, was jede Ausgabezeile aussagt
5

Die Beobachtungen in jedem Fenster verfolgen

16 Schritte
Zeilenfenster, Fenster nach verstrichener Zeit, kumulativen Verlauf und exponentielle Gewichtung vergleichen.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungEntscheiden, wie viel Verlauf relevant ist
  2. 2
    BeispielDas erste vollständige Zeilenfenster bilden
  3. 3
    BeispielDas Fenster um eine Zeile verschieben
  4. 4
    HerausforderungGültige Werte an den Positionen zählen
  5. 5
    TippErgebnisse zeitlich zutreffend platzieren
  6. 6
    ErklärungFür unregelmäßige Ereignisse verstrichene Zeit nutzen
  7. 7
    BeispielDie ausgeschlossene linke Grenze nachvollziehen
  8. 8
    HerausforderungGrenze und Mindestanzahl ändern
  9. 9
    KernaussageEin Monat ist keine feste Dauer für ein gleitendes Fenster
  10. 10
    BeispielDen gesamten bisherigen Verlauf behalten
  11. 11
    BeispielEinen Wert mit seinem früheren Höchstwert vergleichen
  12. 12
    BeispielEinen rekursiven gewichteten Mittelwert aktualisieren
  13. 13
    ErklärungDie Einstellung für die Anpassung lesen
  14. 14
    HerausforderungGewichtung vom jüngsten Wertepaar unterscheiden
  15. 15
    HerausforderungDen berücksichtigten Verlauf eines Berichts wählen
  16. 16
    ZusammenfassungDas Fenster vor dem Lesen des Ergebnisses bestimmen
6

Zeitpunkte über Zeitzonen und Zeitumstellungen hinweg zuordnen

12 Schritte
Zeitstempel lokalisieren und umrechnen, übersprungene oder wiederholte Stunden auflösen und korrekte lokale Tagesintervalle bilden.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungDie Uhrzeit vom Zeitpunkt unterscheiden
  2. 2
    ErklärungEine Uhrzeit ohne Zeitzoneninformation lokalisieren
  3. 3
    BeispielEin Ereignis in mehrere Ortszeiten umrechnen
  4. 4
    TippRegionale Regeln beibehalten
  5. 5
    HerausforderungWählen, wie eine Zeitzone entfernt wird
  6. 6
    ErklärungEine übersprungene Uhrzeit im Frühjahr behandeln
  7. 7
    ErklärungZwei Auftreten im Herbst unterscheiden
  8. 8
    HerausforderungDie wiederholte Uhrzeit auflösen
  9. 9
    BeispielEinen vollständigen lokalen Tag zählen
  10. 10
    BeispielMorgen 12:00 Uhr von 24 Stunden unterscheiden
  11. 11
    HerausforderungDen lokalen Tagesbericht korrigieren
  12. 12
    ZusammenfassungZeitpunkt und Berichtsgrenze klar halten

Zeitreihen mit pandas: Übungsaufgaben

50 Übungsfragen in 5 Sets

Set 1: Datumsangaben einlesen, auswählen und zusammenfassen10 Übungsfragen

Frage 1 von 10

Eine Aufgabe beginnt am „2025-08-12 22:15“ und endet am „2025-08-14 04:45“. Wie viele verstrichene Stunden ergibt die Subtraktion der Zeitstempel?
  1. 24,0 Stunden
  2. 6,5 Stunden
  3. 30,5 Stunden
  4. 54,5 Stunden
Antwort zeigenAntwort ausblenden
Antwort: C
Die Zeitdauer beträgt einen ganzen Tag plus 6 Stunden 30 Minuten, insgesamt 30,5 Stunden. Würdest du nur die .days-Komponente des Timedeltas lesen, blieben 24 Stunden erhalten und die übrigen 6,5 Stunden gingen verloren. Dividiere die Zeitdauer durch pd.Timedelta(hours=1), um die vollständige Dauer einzubeziehen.

Frage 2 von 10

Eine Quelle definiert „07/11/2025 16:20“ als den 7. November um 16:20 Uhr. Welches ausdrückliche Format liest diese Konvention ein?
  1. "%m/%d/%Y %H:%M"
  2. "%d/%m/%Y %H:%M"
  3. "%d/%m/%Y %I:%M"
  4. "%Y/%m/%d %H:%M"
Antwort zeigenAntwort ausblenden
Antwort: B
Die Quelle setzt den Tag vor den Monat, daher erhält %d/%m/%Y den 7. November. %H:%M liest die Uhrzeit im 24-Stunden-Format und die Minuten. Das Einlesen mit dem Monat an erster Stelle würde den 11. Juli ergeben, ein gültiges Datum mit falscher Bedeutung. Deshalb reicht eine erfolgreiche Umwandlung allein nicht aus.

Frage 3 von 10

Ein Index enthält den 3., 1. und 2. Mai 2025 jeweils einmal. Die Datumsangaben sind bereits eingelesen. Was bereitet ihn für eine zuverlässige Auswahl von Datumsbereichen vor?
  1. Den Index chronologisch sortieren.
  2. Wiederholte Bezeichnungen vor der Auswahl entfernen.
  3. Den Index durch Monatsnummern ersetzen.
  4. Die numerischen Beobachtungen vorwärts auffüllen.
Antwort zeigenAntwort ausblenden
Antwort: A
Die Bezeichnungen sind Datums- und Zeitwerte und eindeutig, liegen aber ungeordnet vor. sort_index() stellt die chronologische Reihenfolge her, die für eine zuverlässige Zeitauswahl benötigt wird. Das Entfernen von Dubletten würde das Problem nicht lösen, weil der angegebene Index keine wiederholten Zeitstempel enthält.

Frage 4 von 10

Ein sortierter Index hat am gesamten 8. Juli 2025 eine stündliche Zeile. Wie viele Zeilen wählt .loc["2025-07-08 09:00":"2025-07-08 12:00"] aus?
  1. 3 Zeilen
  2. 12 Zeilen
  3. 24 Zeilen
  4. 4 Zeilen
Antwort zeigenAntwort ausblenden
Antwort: D
Der bezeichnungsbasierte Slice schließt 09:00, 10:00, 11:00 und 12:00 Uhr ein, insgesamt vier Zeilen. Würde das Ende wie eine .iloc-Endposition behandelt, entfiele 12:00 Uhr und es ergäben sich drei. Datums- und Zeit-Slices nach Bezeichnung schließen beide Endpunkte ein, wenn passende Zeilen vorhanden sind.

Frage 5 von 10

Was ist der erste Zeitstempel in pd.date_range("2025-08-19", periods=3, freq="MS")?
  1. Der 1. August 2025
  2. Der 1. September 2025
  3. Der 19. August 2025
  4. Der 31. August 2025
Antwort zeigenAntwort ausblenden
Antwort: B
Die Regel MS verlangt Monatsanfänge, sodass das erste passende Datum am oder nach dem 19. August der 1. September ist. Der 1. August liegt bereits vor dem angegebenen Anfang. Die Datumsfolge schließt den 19. August nicht allein deshalb ein, weil dieses Datum als Anfangsgrenze übergeben wurde.

Frage 6 von 10

Eine Erinnerung ist auf den 30. Januar 2025 datiert und soll um einen Kalendermonat nach hinten verschoben werden. Welches Datum ergibt pd.DateOffset(months=1)?
  1. Der 1. März 2025
  2. Der 2. März 2025
  3. Der 28. Februar 2025
  4. Der 27. Februar 2025
Antwort zeigenAntwort ausblenden
Antwort: C
Beim Verschieben in den Februar bleibt Tag 30 nur erhalten, wenn es ihn gibt. Der Februar 2025 endet am Tag 28, daher begrenzt der Offset auf den 28. Februar. Die Addition von 30 verstrichenen Tagen würde den 1. März erreichen, aber eine feste Zeitdauer ist eine andere Anweisung als ein Kalendermonat.

Frage 7 von 10

Ein Sensor erfasst im Lauf eines Tages Temperaturen von 18, 24 und 21 °C. Der Bericht fragt nach dem Mittelwert der erfassten Temperaturen. Welches Tagesergebnis soll das Resampling liefern?
  1. 21 °C
  2. 63 °C
  3. 24 °C
  4. 18 °C
Antwort zeigenAntwort ausblenden
Antwort: A
Der Mittelwert ist die Summe der drei Beobachtungen dividiert durch drei und beträgt 21 °C. Die Summe 63 behandelt ein Temperaturniveau als additive Größe und beantwortet die gestellte Frage nicht. Ein Maximum von 24 würde statt des Mittelwerts den Höchstwert ausgeben.

Frage 8 von 10

Eine Geräteeinstellung beträgt am 1. September 12 und ändert sich am 4. September auf 18. Sie gilt zwischen den erfassten Änderungen unverändert. Welche Tageswerte sollte ein aufgefülltes Raster vom 1. bis 4. September zeigen?
  1. 12, 14, 16, 18
  2. 12, 18, 18, 18
  3. 12, 0, 0, 18
  4. 12, 12, 12, 18
Antwort zeigenAntwort ausblenden
Antwort: D
Vorwärtsauffüllen übernimmt die letzte bekannte Einstellung bis zur nächsten Änderung und ergibt am 2. und 3. September jeweils 12. Lineare Interpolation würde Zwischeneinstellungen von 14 und 16 erzeugen, aber das beschriebene Gerät ändert sich zwischen den Einträgen nicht allmählich. Die Bedeutung der Größe bestimmt die Auffüllmethode.

Frage 9 von 10

Was ist für s = pd.Series([3, 9, 6, 12]) der letzte Wert von s.rolling(3).mean()?
  1. 6,0
  2. 9,0
  3. 7,5
  4. 12,0
Antwort zeigenAntwort ausblenden
Antwort: B
Das letzte Fenster mit drei Zeilen enthält 9, 6 und 12; ihr Mittelwert ist 9. Der Wert 7,5 mittelt den gesamten Verlauf aus vier Zeilen, was zu einem wachsenden Mittelwert passen würde. Ein gleitendes Fenster lässt 3 herausfallen, wenn die vierte Beobachtung hinzukommt.

Frage 10 von 10

Eine in Amsterdam erfasste Uhrzeit ohne Zeitzoneninformation lautet „2025-07-15 10:00“. Ein UTC-Protokoll enthält Ereignisse um 08:00 und 10:00 Uhr. Welches Ereignis passt zur Uhrzeit und wie sollte sie vorbereitet werden?
  1. Auf Amsterdam lokalisieren, in UTC umrechnen; 08:00 zuordnen.
  2. Auf UTC lokalisieren, in Amsterdam umrechnen; 10:00 zuordnen.
  3. Auf Amsterdam lokalisieren, Zeitzone entfernen; 10:00 zuordnen.
  4. Auf UTC lokalisieren, Zeitzone entfernen; 08:00 zuordnen.
Antwort zeigenAntwort ausblenden
Antwort: A
Amsterdam ist im Juli zwei Stunden vor UTC, sodass dortige 10:00 Uhr 08:00 Uhr UTC bezeichnet. Zuerst ordnet die Lokalisierung den Erfassungsort zu; die Umrechnung bewahrt dann diesen tatsächlichen Zeitpunkt in UTC. Würde die ursprüngliche Uhrzeit als UTC lokalisiert, bezeichnete sie ein anderes Ereignis zwei Stunden später.
Set 2: Verläufe und Fensterergebnisse vergleichen10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Was gibt .dt.day_of_week für eine Beobachtung am Sonntag zurück?
  1. 0
  2. 1
  3. 7
  4. 6
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Die Besucherzahlen betragen am Montag 320, am Dienstag 400 und am Mittwoch 360. Was gibt pct_change() für Mittwoch aus?
  1. −0,10
  2. −0,125
  3. −40,0
  4. 0,90
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Eine Organisation verwendet Geschäftsjahresquartale mit freq="Q-SEP". Welche Zeitspanne beschreibt pd.Period("2026Q1", freq="Q-SEP")?
  1. Januar bis März 2026
  2. Juli bis September 2026
  3. Oktober bis Dezember 2025
  4. Oktober bis Dezember 2026
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Eine Ereignisreihe enthält 5 um 10:00 Uhr, 8 um 10:05 Uhr und 2 um 10:09 Uhr. Welcher Wert wird bei resample("5min", closed="right", label="right").sum() mit 10:05 bezeichnet?
  1. 13
  2. 8
  3. 10
  4. 15
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Sensor A meldet 6 im Januar und 9 im März; Sensor B meldet 4 im Februar. Eine Tabelle muss jeden Sensor für Januar bis März zeigen und unbeobachtete Monate als fehlend belassen. Welcher Ablauf passt?
  1. Alle Sensoren monatlich durch Resampling zusammenfassen und die Summen in jede Sensorspalte kopieren.
  2. Nur nach Monatsnummer gruppieren und fehlende Sensorbezeichnungen vorwärts auffüllen.
  3. Nach Sensor und Monat aggregieren und das vollständige Sensor-Monat-Raster neu indizieren.
  4. Je Sensor mit Standardsummen Resampling durchführen und jede null durch einen fehlenden Wert ersetzen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Was sind für [2, NaN, 8, 14] die letzten beiden Ergebnisse von rolling(3, min_periods=2).mean()?
  1. 5,0 und 11,0
  2. NaN und NaN
  3. 6,0 und 12,0
  4. 5,0 und 8,0
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Die Werte sind 7 am 1. April, 4 am 3. April und 9 am 6. April, jeweils um Mitternacht. Was ist der Wert von rolling("3D").sum() am 6. April?
  1. 13
  2. 9
  3. 20
  4. 11
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Eine Zeitreihe lautet 80, 100, 75 und 90. Welchen Drawdown hat die vierte Zeile bei Verwendung von s / s.cummax() - 1?
  1. 0,20
  2. −0,25
  3. 0,125
  4. −0,10
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Ein Protokollierungsgerät gibt „2025-01-10 09:00+01:00“ und „2025-07-10 09:00+02:00“ aus. Der Bericht muss die Zeitpunkte bewahren und die Amsterdamer Uhrzeit anzeigen. Welche Reihenfolge passt zu pandas 3?
  1. Mit utc=True einlesen und dann in Europe/Amsterdam umrechnen.
  2. Mit utc=True einlesen und dann auf Europe/Amsterdam lokalisieren.
  3. Die Zeitverschiebungen entfernen und beide Uhrzeiten auf UTC lokalisieren.
  4. Ohne Zeitverschiebungen einlesen und die Ergebnisse ohne Zeitzoneninformation in Amsterdamer Zeit umrechnen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Ein Amsterdamer Zähler erfasst bei vollständiger Abdeckung in jeder tatsächlichen Stunde des 26. Oktober 2025 jeweils 2 kWh. Welche Tagessumme und welchen stündlichen Durchschnittsverbrauch sollte sein Bericht für den lokalen Tag zeigen?
  1. 48 kWh und 2 kWh pro erfasster Stunde
  2. 50 kWh und etwa 2,083 kWh pro erfasster Stunde
  3. 50 kWh und 2 kWh pro erfasster Stunde
  4. 46 kWh und 2 kWh pro erfasster Stunde
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 3: Die passende Kalenderoperation wählen10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Eine Spalte lautet ["2025-09-02", None, "2025-15-02", "bad"]. Sie wird mit format="%Y-%m-%d", errors="coerce" eingelesen. Wie viele vorhandene Quellwerte konnten nicht umgewandelt werden?
  1. 1
  2. 2
  3. 3
  4. 4
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Ein sortierter täglicher Index enthält den 2., 3. und 5. November 2025. Was zeigt ein vollständiger Kalender vom 1. bis 6. November, das ein Kalender vom Minimum bis zum Maximum nicht zeigt?
  1. Das innerhalb des Bereichs fehlende Datum, den 4. November.
  2. Das wiederholte Datum, den 3. November.
  3. Die Wochentagsnamen des 2. und 5. November.
  4. Die fehlenden Randdaten, den 1. und 6. November.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Ein vollständiger stündlicher Index umfasst den 1. bis 3. Dezember 2025. Wie viele Zeilen wählt .loc["2025-12-02":"2025-12-03"] aus?
  1. 48 Zeilen
  2. 25 Zeilen
  3. 24 Zeilen
  4. 47 Zeilen
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Wie viele Zeitstempel enthält pd.date_range("2025-06-10", "2025-06-11", freq="6h") bei standardmäßiger Einbeziehung der Endpunkte?
  1. 4
  2. 6
  3. 5
  4. 24
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Zwei Messungen erfolgen 2025 am 4. Februar um 08:00 Uhr und am 21. Februar um 17:00 Uhr. Ihr Index wird in Monatsperioden und dann mit .to_timestamp() zurück umgewandelt. Was geschieht mit den Bezeichnungen und ihrer Eindeutigkeit?
  1. Beide behalten ihre ursprünglichen Tage, sodass die Bezeichnungen eindeutig bleiben.
  2. Beide werden zum 28. Februar um Mitternacht, sodass sich die Bezeichnungen wiederholen.
  3. Sie werden zum 1. Februar und 1. März, sodass die Bezeichnungen eindeutig bleiben.
  4. Beide werden zum 1. Februar um Mitternacht, sodass sich die Bezeichnungen wiederholen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Wasserstandsmessungen ergeben 20 cm am 10. Mai und 32 cm am 13. Mai. Wie lautet nach Erstellung eines Tagesrasters und linearer Interpolation die Schätzung für den 12. Mai?
  1. 28 cm
  2. 24 cm
  3. 26 cm
  4. 32 cm
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Ein Geschäft hat Umsätze von 14 im Januar und 22 im März, aber keine Februarzeile. Wie unterscheiden sich die standardmäßigen Monatssummen beim Resampling je Geschäft und bei der Gruppierung nach Geschäft plus pd.Grouper?
  1. Das Resampling je Geschäft lässt Februar weg; die Grouper-Form enthält ihn als 0.
  2. Das Resampling je Geschäft enthält Februar als 0; die Grouper-Form lässt ihn weg.
  3. Beide enthalten Februar als NaN, weil kein Verkauf beobachtet wurde.
  4. Beide enthalten Februar als 18 durch Interpolation zwischen den Verkäufen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Bestellungen haben Beträge von 8 am 1. Juni um 12:00 Uhr, 12 am 2. Juni um 12:00 Uhr und 20 am 4. Juni um 12:00 Uhr. Wie lauten die letzte Summe und Anzahl für rolling("3D", min_periods=2) mit Standardgrenzen?
  1. 32 und 2
  2. 40 und 3
  3. 20 und 1
  4. NaN und 1
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Wie lauten für die Messwerte 6, 18 und 10 der dritte rekursive EWMA und der dritte wachsende Mittelwert bei Verwendung von ewm(span=3, adjust=False)?
  1. 14 und etwa 11,333
  2. 11 und 12
  3. 11 und etwa 11,333
  4. 10 und etwa 11,333
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Zwei Amsterdamer Einträge lauten beide auf den 26. Oktober 2025 um 02:15 Uhr. Einer wird mit ambiguous=True lokalisiert, der andere mit ambiguous=False. Wie groß ist ihr Abstand nach der Umrechnung in UTC?
  1. Sie bezeichnen denselben Zeitpunkt in UTC.
  2. Der erste liegt 1 Stunde vor dem zweiten.
  3. Der erste liegt 1 Stunde nach dem zweiten.
  4. Der erste liegt 2 Stunden vor dem zweiten.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 4: Zeitreihenberechnungen untersuchen10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Eine eingelesene Spalte hat den Datentyp datetime64[us]. Ein Export benötigt ganzzahlige Zählwerte in Nanosekunden. Welcher Spaltenausdruck liefert diese Zählwerte?
  1. s.dt.as_unit("ns").astype("int64")
  2. s.astype("int64")
  3. s.dt.as_unit("ms").astype("int64")
  4. s.dt.normalize().astype("int64")
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Eine UTC-Ereignisanzahl ist als Unix-Wert 1735689600000 in Millisekunden gespeichert. Welche Einleseargumente bewahren die angegebene Einheit und Zeitzone?
  1. unit="s", utc=True
  2. unit="us", utc=True
  3. unit="ms", utc=True
  4. unit="ms", utc=False
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Series a hat 30 am 1. August und 50 am 4. August. Du berechnest a - a.shift(1, freq="D"). Welche Werte erscheinen am 2. und 4. August?
  1. −30 und 20
  2. 30 und 50
  3. NaN und 20
  4. NaN und NaN
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Was ergeben die Addition von MonthEnd(0) und die Addition von MonthEnd(1) jeweils für einen Zeitstempel, der bereits auf dem 30. April 2025 liegt?
  1. Der 31. Mai und der 31. Mai
  2. Der 30. April und der 31. Mai
  3. Der 30. April und der 30. April
  4. Der 30. April und der 30. Mai
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Eine Monatsperiode für Mai 2025 wird mit .asfreq("D", how="end") und anschließend mit .to_timestamp() unter Standardeinstellungen umgewandelt. Welcher Zeitstempel ergibt sich?
  1. Der 31. Mai 2025 um 00:00 Uhr
  2. Der 1. Mai 2025 um 00:00 Uhr
  3. Der 31. Mai 2025 um 23:59:59.999999 Uhr
  4. Der 1. Juni 2025 um 00:00 Uhr
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Eine Datumsfolge verwendet freq="B" von Freitag, dem 12. September, bis Montag, dem 15. September 2025. Es werden keine benutzerdefinierten Feiertage angegeben. Welche Daten erscheinen?
  1. Der 12., 13., 14. und 15. September
  2. Der 13. und der 14. September
  3. Nur der 12. September
  4. Der 12. und der 15. September
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Stündliche kWh-Beobachtungen umfassen einen vollständigen Tag einschließlich seines Mitternachtsmesswerts. Ein Tagesbericht verwendet asfreq("D"). Warum ist der ausgegebene Wert nicht die tägliche Energiesumme?
  1. Es summiert alle Stundenmesswerte, bezeichnet das Ergebnis aber mit Mitternacht.
  2. Es bildet den Tagesmittelwert und multipliziert ihn mit der beobachteten Anzahl.
  3. Es wählt den Mitternachtsmesswert und lässt die übrigen Stundenbeiträge aus.
  4. Es füllt fehlende Stunden, bevor es den größten Stundenmesswert auswählt.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Die täglichen Werte vom 1. bis 7. Juni sind 2, 6, 10, 14, 18, 22 und 26. Wie lauten die mit dem 4. Juni bezeichneten Ergebnisse für rolling(5, center=True).mean() beziehungsweise das standardmäßig rückwärtsgerichtete rolling(5).mean()?
  1. 10 und 10
  2. 14 und NaN
  3. 14 und 10
  4. 18 und 14
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Eine Tabelle ist nach Geschäft und Datum sortiert. Geschäft A hat die Umsätze 5, 7; Geschäft B hat die Umsätze 20, 3. Der Bericht benötigt geschäftsinterne kumulative Summen und geschäftsinterne Summen der letzten zwei Zeilen. Wie lauten die beiden Ausgabefolgen für B?
  1. Kumulativ: 32, 35; letzte Zeilen: 27, 23.
  2. Kumulativ: 20, 23; letzte Zeilen: 20, 23.
  3. Kumulativ: 12, 35; letzte Zeilen: NaN, 35.
  4. Kumulativ: 20, 23; letzte Zeilen: NaN, 23.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Ein Zeitstempel mit Zeitzoneninformation ist der 20. Juli 2025 um 14:00 Uhr in Amsterdam. Welche Uhrzeiten ohne Zeitzoneninformation ergeben sich aus tz_convert(None) und tz_localize(None) in dieser Reihenfolge?
  1. 12:00 und 14:00 Uhr
  2. 14:00 und 12:00 Uhr
  3. 14:00 und 14:00 Uhr
  4. 16:00 und 14:00 Uhr
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 5: Zeitregeln in vollständigen Analysen kombinieren10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Eine Quelle sendet ["2025-12-02", "03/12/2025"] und dokumentiert Datumsangaben mit Schrägstrichen und dem Tag an erster Stelle. Welche Interpretation sollte die Bereinigung bewahren?
  1. Den 2. Dezember und den 12. März 2025
  2. Den 12. Februar und den 3. Dezember 2025
  3. Den 12. Februar und den 12. März 2025
  4. Den 2. Dezember und den 3. Dezember 2025
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Zwei gültige Transaktionen haben genau denselben Zeitstempel und die Beträge 11 und 17. Ein Bericht benötigt vor der Neuindizierung eine Summe je Zeitstempel. Wie sollten die doppelten Bezeichnungen behandelt werden?
  1. Die letzte Transaktion behalten, was 17 ergibt.
  2. Nach Zeitstempel gruppieren und zu 28 summieren.
  3. Beide Transaktionen mitteln, was 14 ergibt.
  4. Die erste Transaktion behalten, was 11 ergibt.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Eine sortierte stündliche UTC-Tabelle muss für jedes lokale Datum die Aktivität in Tokio von einschließlich 09:00 Uhr bis ausschließlich 17:00 Uhr ausgeben. Welche Operationsreihenfolge und welcher Einschluss des Tageszeitfensters passen?
  1. In Tokios Zeitzone umrechnen und dann between_time(..., inclusive="left") verwenden.
  2. UTC von 09:00 bis 17:00 Uhr filtern und dann die ausgewählten Zeilen in Tokios Zeitzone umrechnen.
  3. In Tokios Zeitzone umrechnen und dann between_time(..., inclusive="both") verwenden.
  4. Die UTC-Zeitzone entfernen, dann auf Tokio lokalisieren und beide Enden einschließen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Geschäft A hat 40 und dann 60 verkaufte Einheiten; Geschäft B hat 90 und dann 72, jeweils in chronologischer Reihenfolge innerhalb des Geschäfts. Wie lauten die relativen Änderungen von B mit gruppiertem beziehungsweise einfachem spaltenweitem pct_change()?
  1. Gruppiert: 0,50; −0,20; einfach: NaN; −0,20.
  2. Gruppiert: NaN; −0,25; einfach: 1,25; −0,25.
  3. Gruppiert: NaN; −0,20; einfach: 0,50; −0,20.
  4. Gruppiert: 0,50; −0,25; einfach: NaN; −0,25.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Eine Fachkraft plant eine Inspektion für 08:45 Uhr Ortszeit in Amsterdam. Welche Operation verschiebt vom 25. Oktober 2025 um 08:45 Uhr in pandas 3 auf dieselbe Uhrzeit am nächsten Tag?
  1. pd.Timedelta(hours=24) addieren.
  2. pd.offsets.Day(1) addieren.
  3. pd.Timedelta(hours=23) addieren.
  4. pd.offsets.MonthEnd(0) addieren.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Eine Tabelle umfasst Januar 2024 und Januar 2025 für mehrere Geschäfte. Der Bericht benötigt eine Summe je Geschäft und eindeutigem Kalendermonat. Welche Gruppierungsschlüssel erhalten die benötigten Zuordnungen?
  1. Geschäft und df["date"].dt.month.
  2. Nur pd.Grouper(key="date", freq="ME").
  3. Geschäft und pd.Grouper(key="date", freq="ME").
  4. Geschäft und df["date"].dt.day_of_week.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Für ein unregelmäßiges Kundenprotokoll werden die Ausgaben in den vorangegangenen 30 verstrichenen Tagen benötigt. Das aktuelle Ereignis soll eingeschlossen und der Zeitpunkt genau 30 Tage zuvor ausgeschlossen sein. Welche Berechnung passt nach der Sortierung innerhalb der Kunden?
  1. df.groupby("customer").rolling("30D", on="date")["amount"].sum()
  2. df.groupby("customer")["amount"].rolling(30).sum()
  3. df.groupby("customer").rolling("30D", on="date", closed="both")["amount"].sum()
  4. df.rolling("30D", on="date")["amount"].sum()
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Eine stündliche UTC-Zeitreihe deckt den lokalen Amsterdamer Tag des 30. März 2025 vollständig ab. Wie lauten für diesen lokalen Tag der Anfang in UTC, das Ende in UTC (ausschließlich) und die Anzahl der Stunden?
  1. Am 30. März um 00:00 Uhr; am 31. März um 00:00 Uhr; 24 Stunden.
  2. Am 29. März um 22:00 Uhr; am 30. März um 23:00 Uhr; 25 Stunden.
  3. Am 29. März um 23:00 Uhr; am 30. März um 23:00 Uhr; 24 Stunden.
  4. Am 29. März um 23:00 Uhr; am 30. März um 22:00 Uhr; 23 Stunden.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Eine tägliche Energiereihe hat die Messwerte 4 am 2. Oktober und 7 am 4. Oktober 2025. Fehlende Einträge bedeuten unbekannten Verbrauch. Was sollte der 3. Oktober nach resample("D").sum(min_count=1) enthalten?
  1. 0 kWh
  2. 5,5 kWh
  3. NaN
  4. 4 kWh
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Niederschlagsbeobachtungen decken jeden Tag vom 1. Juli bis zum 10. August 2025 ab. Die Monatssummen sind 93 mm und 50 mm. Wie lauten die Mittelwerte je beobachtetem Tag und was lässt sich über die Summe für den ganzen August sagen?
  1. Juli: 3 mm; August: 5 mm; der ganze August muss höher liegen.
  2. Juli: 3 mm; August: 5 mm; der Wert für den ganzen August bleibt unbekannt.
  3. Juli: 3 mm; August: etwa 1,61 mm; der ganze August liegt niedriger.
  4. Juli: 93 mm; August: 50 mm; der Wert für den ganzen August bleibt unbekannt.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Hängst du bei deiner eigenen Aufgabe fest? Hausaufgabenhilfe

Schlüsselbegriffe

85 Schlüsselbegriffe, jeweils mit Definition

A

Anzahl nicht fehlender Werte im Fenster
Die Anzahl nicht fehlender Werte im Fenster gibt an, wie viele nicht fehlende Beobachtungen innerhalb eines gleitenden Fensters eingehen, und zeigt, auf wie vielen Daten sein Kennwert beruht.
Die Anzahl nicht fehlender Werte im Fenster zeigt, wenn ein gleitender Mittelwert auf einem einzelnen Messwert und ein anderer auf zehn beruht.
asfreq
Die Frequenzumwandlung mit asfreq() setzt eine Zeitreihe auf ein neues Raster, indem sie passende Zeitstempel auswählt, ohne dazwischenliegende Beobachtungen zu aggregieren.
Tägliches asfreq() auf stündlichen Daten behält Mitternachtsmesswerte, ohne die Werte des Tages zu addieren.
Ausrichtung anhand von Zeitstempeln
Die Ausrichtung anhand von Zeitstempeln ordnet bei Rechnungen mit Series Beobachtungen anhand ihrer Datums- und Zeitbezeichnungen einander zu, statt anhand ihrer Zeilenposition.
Die Ausrichtung anhand von Zeitstempeln lässt beim Addieren zweier Geschäftsverläufe ein nicht zugeordnetes Datum fehlend.

B

Bezeichnungsbasierter Slice einschließlich beider Endpunkte
Ein bezeichnungsbasierter Slice einschließlich beider Endpunkte behält passende Bezeichnungen an seinem Anfang und Ende, anders als ein positionsbasierter Slice, der die Endposition ausschließt.
Ein bezeichnungsbasierter Slice einschließlich beider Endpunkte von 10:00 bis 13:00 Uhr behält vier stündliche Zeilen, wenn alle vorhanden sind.

D

DateOffset
Ein DateOffset verschiebt einen Zeitstempel nach Kalenderfeldern oder -regeln, sodass Monate und Jahre unterschiedlich lang sein können, gemessen an der verstrichenen Zeit.
Ein DateOffset von einem Monat begrenzt den 31. Januar auf den letzten gültigen Tag des Februars.
DatetimeIndex
Ein DatetimeIndex ist ein pandas-Index aus Datums- und Zeitwerten als Zeilenbezeichnungen, der die Auswahl nach Kalenderangaben unterstützt und eine Grundlage für zeitbasierte Berechnungen bietet.
Ein aus Ereigniszeiten erstellter DatetimeIndex ermöglicht es, mit .loc einen ganzen Berichtsmonat auszuwählen.
Datumsfolge
Eine Datumsfolge ist eine aus Grenzen, einer Anzahl und einer Frequenzregel erzeugte Folge von Datums- und Zeitbezeichnungen, die häufig als erwarteter Kalender dient.
Eine Datumsfolge aus 24 stündlichen Bezeichnungen kann den Zielindex für einen vollständigen gewöhnlichen Tag festlegen.
Doppelter Zeitstempel
Ein doppelter Zeitstempel ist eine Zeilenbezeichnung, die von mehr als einer Beobachtung geteilt wird und separate gültige Ereignisse oder wiederholte Einträge darstellen kann.
Ein doppelter Zeitstempel um 14:00 Uhr kann zwei Käufe bezeichnen, die beide in eine Umsatzsumme gehören.
Downsampling
Downsampling geht von einer feineren zu einer gröberen zeitlichen Frequenz über und kombiniert dabei meist mehrere Beobachtungen mit einer gewählten Aggregation.
Downsampling von täglichem Niederschlag zu Monatssummen behält Millimeter als Einheit der Summe bei.
Drawdown
Ein Drawdown ist der relative Rückgang eines Werts gegenüber seinem kumulativen Maximum. Er wird als aktueller Wert dividiert durch dieses Maximum, minus eins, berechnet.
Ein Wert von 90 nach einem Höchstwert von 120 hat einen Drawdown von −0,25. Er liegt also 25 % unter diesem Höchstwert.

E

Einbeziehung der Endpunkte
Die Einbeziehung der Endpunkte bestimmt, ob passende Anfangs- und Endgrenzen in einer erzeugten Datumsfolge erscheinen, und beeinflusst damit die Anzahl der Bezeichnungen.
Die standardmäßige Einbeziehung der Endpunkte ergibt 25 stündliche Bezeichnungen von einer Mitternacht bis zur nächsten.
Einleseformat
Ein Einleseformat legt mithilfe von Codes für Felder wie Jahr, Monat und Minute fest, wie Textfelder Datums- und Zeitkomponenten darstellen.
Das Einleseformat "%d/%m/%Y" liest „08/11/2025“ als 8. November statt als 11. August.
Einlesen gemischter Datumsformate
Beim Einlesen gemischter Datumsformate wird jede Datumszeichenkette einzeln interpretiert. So sind unterschiedliche Formate in einer Spalte möglich, nachdem ihre Bedeutungen geprüft wurden.
Auch beim Einlesen gemischter Datumsformate muss die Tag-Monat-Konvention für jedes Quelldatum mit Schrägstrichen bekannt sein.
Ermittelte Frequenz
Eine ermittelte Frequenz ist eine anhand beobachteter Zeitstempel erkannte Regel für regelmäßige Abstände, selbst wenn der Index keine gespeicherten Frequenzmetadaten enthält.
Eine ermittelte Frequenz kann in drei aufeinanderfolgenden Zeitstempeln für Monatsenden ein monatliches Muster aufdecken.
Exponentiell gewichteter gleitender Mittelwert
Ein exponentiell gewichteter gleitender Mittelwert glättet eine Zeitreihe, indem die Gewichte älterer Beobachtungen mit ihrem Alter um einen konstanten Faktor verringert werden.
Ein exponentiell gewichteter gleitender Mittelwert mit Alpha 0,5 aktualisiert einen vorherigen Mittelwert von 6 bei einem neuen Wert von 10 auf 8.

F

Fenster mit fester Zeitdauer
Ein Fenster mit fester Zeitdauer hat eine gleichbleibende verstrichene Länge, etwa 24 Stunden oder 30 Tage, anders als Kalenderzeitspannen, deren Länge vom Datum abhängt.
Ein Fenster mit fester Zeitdauer von 30 Tagen kann nicht durch eine Kalendermonatsregel variabler Länge ersetzt werden.
Frequenzkürzel
Ein Frequenzkürzel ist eine kurze Zeichenkette, die eine Wiederholungsregel für Datums- und Zeitoperationen benennt, etwa stündliche Intervalle oder Kalenderankerpunkte am Monatsende.
Das Frequenzkürzel "15min" erzeugt Viertelstundenbezeichnungen, während "ME" Monatsenden erzeugt.

G

Geschäftsjahresquartal
Ein Geschäftsjahresquartal ist ein dreimonatiger Berichtszeitraum innerhalb eines Geschäftsjahres, dessen Endmonat auch ein anderer als Dezember sein kann.
Bei Q-JUN umfasst das erste Geschäftsjahresquartal 2025 die Monate Juli bis September 2024.
Geschäftstagsfrequenz
Eine standardmäßige Geschäftstagsfrequenz erzeugt Daten von Montag bis Freitag und überspringt Wochenenden; für Feiertage benötigt sie ausdrückliche benutzerdefinierte Regeln.
Eine Geschäftstagsfrequenz schließt Freitag und Montag ein und überspringt das dazwischenliegende Wochenende.
Glättungsfaktor
Der Glättungsfaktor Alpha steuert das Gewicht der neuen Beobachtung in einem rekursiven exponentiell gewichteten Mittelwert; das restliche Gewicht liegt auf dem vorherigen Mittelwert.
Ein Glättungsfaktor von 0,5 gewichtet den neuen Messwert und den vorherigen geglätteten Wert gleich.
Glättungsverzögerung
Die Glättungsverzögerung ist die verzögerte Reaktion eines gleitenden Mittelwerts auf Richtungsänderungen. Sie nimmt im Allgemeinen zu, wenn mehr ältere Werte beibehalten werden.
Die Glättungsverzögerung lässt einen langen rückwärtsgerichteten Mittelwert nach einem plötzlichen Anstieg der Messwerte langsam reagieren.
Gleitende Korrelation
Die gleitende Korrelation misst den Zusammenhang zwischen zwei Zeitreihen anhand einer sich verschiebenden Auswahl gepaarter Beobachtungen und zeigt so Änderungen im Zeitverlauf.
Die gleitende Korrelation kann zeigen, dass sich zwei Sensoren in einem Intervall gemeinsam und in einem anderen weniger eng zusammen bewegen.
Gleitendes Fenster
Ein gleitendes Fenster ist eine sich verschiebende Auswahl von Zeilen oder Zeiten, mit der ein Kennwert im Verlauf der Zeitreihe wiederholt berechnet wird.
Ein gleitendes Fenster mit drei Zeilen lässt seine älteste Zeile herausfallen, wenn eine neue Zeile in die Berechnung eingeht.
Gruppenweises Resampling
Gruppenweises Resampling wendet eine zeitliche Frequenzoperation getrennt innerhalb jeder Zeitreihenkennung an und erhält so unabhängige Verläufe in einer langen Tabelle.
Gruppenweises Resampling hält die monatlichen Intervalle eines Sensors von den Messwerten benachbarter Sensoren getrennt.

I

IANA-Zeitzonenname
Ein IANA-Zeitzonenname bezeichnet einen regionalen Zeitzonenregelsatz, meist in der Form Area/City, einschließlich historischer und saisonaler Änderungen der Zeitverschiebung.
Der IANA-Zeitzonenname „Europe/Amsterdam“ liefert unterschiedliche Zeitverschiebungen im Winter und Sommer.
Indizierung mit unvollständigen Datumszeichenketten
Die Indizierung mit unvollständigen Datumszeichenketten wählt alle Zeitstempel aus, die zur Genauigkeit einer Datumszeichenkette passen, etwa jede Beobachtung innerhalb eines angegebenen Monats.
Die Indizierung mit unvollständigen Datumszeichenketten mit "2025-09" behält stündliche Beobachtungen im gesamten September.
Intervallabschluss
Der Intervallabschluss legt fest, welche Grenze eines Resampling-Intervalls zu diesem gehört und wo Beobachtungen genau auf der Grenze gezählt werden.
Ein rechter Intervallabschluss ordnet einen Messwert genau um 10:05 Uhr dem zu diesem Zeitpunkt endenden Intervall zu.
Intervallbezeichnung
Eine Intervallbezeichnung ist der einem aggregierten Zeitintervall zugewiesene Zeitstempel. Sie kennzeichnet das Ergebnis, ohne die Zugehörigkeit zu bestimmen.
Eine Intervallbezeichnung mit dem 30. Juni kann ein Quartal benennen, das nur Beobachtungen aus dem April enthält.
ISO 8601
ISO 8601 ist eine Schreibweise für Datums- und Zeitangaben, die das Jahr vor Monat und Tag setzt und vollständige Daten über lokale Konventionen hinweg eindeutig macht.
Das ISO-8601-Datum „2025-08-17“ hat bei Konventionen mit Tag oder Monat an erster Stelle dieselbe Datumsbedeutung.

K

Kalenderbasierte Maske
Eine kalenderbasierte Maske ist ein aus Datumskomponenten wie Wochentag oder Monat gebildeter boolescher Filter, der Zeilen nach einer wiederkehrenden Kalenderbedingung auswählt.
Eine kalenderbasierte Maske mit den Wochentagsnummern 5 und 6 behält Wochenendmesswerte im gesamten Datensatz.
Kalendergebundene Frequenz
Eine kalendergebundene Frequenz wählt festgelegte Kalenderpunkte aus und beginnt beim ersten passenden Punkt an oder nach der angegebenen Grenze.
Eine kalendergebundene Frequenz für Monatsanfänge beginnt am 1. September, wenn ihre Anfangsgrenze der 19. August ist.
Kalendertag
Ein Kalendertag verschiebt das lokale Datum unter Beibehaltung der Uhrzeit um einen Tag. Seine verstrichene Länge kann sich daher bei Sommerzeitumstellungen ändern.
Über eine Zeitumstellung im Frühjahr hinweg kann ein Kalendertag die Uhrzeit 12:00 Uhr um nur 23 verstrichene Stunden verschieben.
Kumulative Summe
Eine kumulative Summe addiert jede neue Beobachtung zur vorherigen Summe und erzeugt einen laufenden Betrag, der innerhalb separater Gruppen neu beginnen kann.
Werden Umsätze vor einer kumulativen Summe nach Jahr gruppiert, beginnt jeden Januar ein neuer Betrag seit Jahresbeginn.
Kumulatives Maximum
Ein kumulatives Maximum ist der höchste Wert, der vom Anfang bis zur aktuellen Beobachtung erreicht wurde. Es bleibt unverändert, bis ein höherer Wert hinzukommt.
Ein kumulatives Maximum bleibt bei 120, wenn eine Zeitreihe auf 90 fällt, bis ein höherer Wert hinzukommt.

L

Lineare Interpolation
Lineare Interpolation schätzt fehlende Werte entlang einer Geraden zwischen bekannten Werten und verwendet auf einem gleichmäßig verteilten Raster gleiche Zuwächse.
Lineare Interpolation schätzt 12 und 14 zwischen den täglichen Endwerten 10 und 16, die drei Tage auseinanderliegen.
Lokales Tagesintervall
Ein lokales Tagesintervall gruppiert Zeitpunkte nach Datum in der benannten Zeitzone des Index. Seine verstrichene Länge kann daher bei Zeitumstellungen von der eines UTC-Tages abweichen.
Ein lokales Tagesintervall muss gebildet werden, nachdem ein stündlicher Index in die für den Bericht verwendete Zeitzone umgerechnet wurde.
Lücke im Zeitindex
Eine Lücke im Zeitindex ist eine erwartete Zeitbezeichnung ohne zugehörige Zeile. Sie lässt sich durch den Vergleich der Beobachtungen mit einem vollständigen Kalender finden.
Eine Lücke im Zeitindex entsteht am Mittwoch, wenn ein täglicher Index nur Dienstag und Donnerstag enthält.

M

Mehrdeutige Ortszeit
Eine mehrdeutige Ortszeit ist eine wiederholte Uhrzeit, die während einer Zeitumstellung zurück zwei verschiedene Zeitpunkte mit unterschiedlichen Zeitverschiebungen bezeichnen kann.
Die mehrdeutige Ortszeit 02:30 Uhr in Amsterdam am 26. Oktober 2025 hat zwei unterschiedliche UTC-Bedeutungen.
min_periods
Das Argument min_periods legt fest, wie viele gültige Werte ein Fenster benötigt, bevor es ein Ergebnis liefert. Fehlende Zellen werden bei dieser Anzahl nicht mitgezählt.
Ein Fenster mit drei Zeilen und einer fehlenden Zelle erfüllt min_periods=2, aber nicht min_periods=3.
Monatliche Wochentagsfrequenz
Eine monatliche Wochentagsfrequenz wählt ein bestimmtes Auftreten eines Wochentags innerhalb jedes Monats aus, etwa den dritten Freitag für ein wiederkehrendes Kalenderereignis.
Die monatliche Wochentagsfrequenz "WOM-3FRI" erzeugt wiederkehrende Daten am dritten Freitag jedes Monats.
Monoton steigender Index
Ein monoton steigender Zeitindex hält jeden Zeitstempel gleich dem vorherigen oder danach. Er erlaubt gleiche Bezeichnungen und bewahrt dabei die Reihenfolge.
Ein monoton steigender Index kann dennoch zwei gültige Käufe mit demselben Zeitstempel enthalten.
MonthEnd-Offset
Ein MonthEnd-Offset verschiebt einen Zeitstempel auf einen Ankerpunkt am Kalendermonatsende. Seine Schrittzahl steuert, ob ein bestehender Ankerpunkt weiter verschoben wird.
Ein MonthEnd-Offset mit Schrittzahl 0 behält den 30. April bei, während die Schrittzahl 1 ihn auf den 31. Mai verschiebt.
MultiIndex
Ein MultiIndex ist ein Index mit mehreren Bezeichnungsebenen, etwa für Geschäft und Monat, sodass ein Ergebnis mehr als eine Gruppierungszuordnung behalten kann.
Ein Umsatz-MultiIndex kann in derselben Zeilenbezeichnung sowohl Geschäft A als auch dessen Januarsumme angeben.

N

NaT
NaT ist das pandas-Kennzeichen für fehlende Datums- und Zeitwerte sowie Zeitdauern. Es wird mit Fehlwertprüfungen wie pd.isna() erkannt.
Ein beim Einlesen durch Fehlerersetzung behandeltes ungültiges Datum wird wie bereits fehlende Eingaben zu NaT.
Nicht existierende Ortszeit
Eine nicht existierende Ortszeit ist eine Uhrzeit, die durch eine Zeitverschiebung nach vorn übersprungen wird und bei der Lokalisierung von Daten ohne Zeitzoneninformation eine Regel benötigt.
Die nicht existierende Ortszeit 02:30 Uhr in Amsterdam am 30. März 2025 benötigt eine Lokalisierungsregel.
Normalisierung von Datums- und Zeitwerten
Die Normalisierung von Datums- und Zeitwerten setzt den Uhrzeitanteil eines Werts auf Mitternacht und behält seine Datums- und Zeitdarstellung für die Analyse bei.
Die Normalisierung von Datums- und Zeitwerten gibt Ereignissen Mitternachtsbezeichnungen und hält ihre Werte als Datums- und Zeitwerte nutzbar.

O

Offene linke Intervallgrenze
Eine offene linke Intervallgrenze schließt Beobachtungen genau am Anfang eines Zeitintervalls aus, selbst wenn die aktuelle rechte Grenze eingeschlossen ist.
Eine offene linke Intervallgrenze sorgt dafür, dass ein standardmäßiges gleitendes Drei-Tage-Fenster am 5. Mai den 2. Mai um Mitternacht ausschließt.
OHLC
OHLC ist eine Aggregation, die für jedes Zeitintervall die erste, höchste, niedrigste und letzte Beobachtung zurückgibt: Eröffnung, Hoch, Tief und Schluss.
Tägliches OHLC unterscheidet den letzten Sensormesswert vom höchsten an diesem Tag erreichten Messwert.

P

Period
Eine Period ist eine durch eine Bezeichnung und Frequenz definierte Zeitspanne, etwa ein Monat oder Quartal, und kein einzelner erfasster Zeitpunkt.
Eine monatliche Period kann eine Umsatzsumme für März bezeichnen, ohne einen beliebigen Tag innerhalb des März auszuwählen.
Periodengrenze
Eine Periodengrenze markiert den Anfang oder letzten Zeitpunkt einer Zeitspanne und wird gewählt, wenn eine Periodenbezeichnung in einen Zeitstempel umgewandelt wird.
Die Wahl der Anfangsgrenze einer Periode ergibt Mitternacht zu Beginn des Monats.
PeriodIndex
Ein PeriodIndex ist ein pandas-Index, dessen Bezeichnungen Perioden mit derselben Frequenz sind. Er eignet sich für Beobachtungen, die wiederkehrende Zeitspannen beschreiben.
Die Addition einer Monatsperiode zu einem PeriodIndex verschiebt jede Bezeichnung um einen ganzen Kalendermonat.

R

Regel für die Zeitzonenlokalisierung
Eine Regel für die Zeitzonenlokalisierung legt fest, wie übersprungene oder wiederholte lokale Uhrzeiten aufgelöst werden, etwa durch Auswahl eines Auftretens, Markierung als fehlend oder Verschiebung.
Das Aufbewahren des rohen Uhrzeittexts ermöglicht es, durch eine verschiebende Lokalisierungsregel geänderte Uhrzeiten zu prüfen.
Relative Änderung
Eine relative Änderung ist der aktuelle Wert dividiert durch seinen Vergleichswert, minus eins. Sie gibt das Wachstum relativ zu diesem früheren Wert an.
Eine relative Änderung von −0,15 bedeutet, dass der aktuelle Betrag 15 % unter seinem Vergleichswert liegt.
Resampling
Resampling ordnet eine Zeitreihe mit einer neuen Frequenz an. Dadurch lassen sich Beobachtungen in gröberen Intervallen zusammenfassen oder auf einem feineren Raster platzieren.
Resampling stündlicher Energiemesswerte mit Tagessummen ergibt eine Energiesumme für jeden Tag.
Rückwärtsauffüllen
Rückwärtsauffüllen ersetzt fehlende Werte durch den nächsten bekannten späteren Wert und überträgt damit Informationen aus der Zukunft auf frühere leere Stellen.
Rückwärtsauffüllen würde den morgigen Kontostand auf ein Datum übertragen, an dem diese Information nicht verfügbar war.
Rückwärtsgerichtetes Fenster
Ein rückwärtsgerichtetes Fenster endet bei der aktuellen Zeile und verwendet Beobachtungen zum Zeitpunkt seiner Bezeichnung oder davor. Es eignet sich für Berichte über die zu diesem Zeitpunkt verfügbaren Informationen.
Ein tägliches rückwärtsgerichtetes Fenster glättet den jüngsten Energieverbrauch, ohne sich auf morgige Messwerte zu stützen.

S

Sommerzeit
Die Sommerzeit ändert lokale Zeitverschiebungen saisonal. Beim Vorstellen der Uhren wird eine Stunde übersprungen und beim Zurückstellen eine Stunde wiederholt.
Die Sommerzeit verkürzt den Amsterdamer Tag der Frühjahrsumstellung, während UTC ohne Sprung weiterläuft.
strftime
Die Methode strftime wandelt Datums- und Zeitwerte mithilfe von Formatcodes in Anzeigetext um und ändert ihre Darstellung von Datums- und Zeitwerten in Zeichenketten.
Ein Bericht kann nach Abschluss seiner Datums- und Zeitrechnungen mit strftime „17 Aug 2025“ anzeigen.

T

Tageszeitfenster
Ein Tageszeitfenster wählt Beobachtungen über mehrere Daten hinweg nach ihrer Tageszeit aus; für jeden Endpunkt wird ausdrücklich festgelegt, ob er eingeschlossen ist.
Ein Tageszeitfenster von 22:00 bis 06:00 Uhr behält an jedem Datum Aktivitäten am späten Abend und frühen Morgen.
Timedelta
Ein Timedelta ist eine feste Zeitdauer, die zu einem Zeitstempel addiert oder durch Subtraktion zweier Zeitpunkte voneinander ermittelt werden kann.
Ein Timedelta von 36 Stunden stellt einen Tag plus zwölf Stunden dar, nicht nur einen ganzen Tag.
Timestamp
Ein Timestamp ist ein pandas-Objekt, das einen Zeitpunkt mit Kalenderfeldern und einer optionalen Zeitzone zur Bestimmung seiner Lage darstellt.
Die Subtraktion des Anfangs-Timestamps eines Ereignisses von seinem End-Timestamp ergibt die verstrichene Zeitdauer.
Typumwandlung mit Fehlerersetzung
Die Fehlerersetzung beim Einlesen von Datumsangaben ersetzt nicht einlesbare Eingaben durch NaT, sodass die Umwandlung abgeschlossen wird und ungültige Werte als fehlend markiert bleiben.
Vergleiche nach der Fehlerersetzung fehlende Ergebnisse mit vorhandenen Quelleinträgen, um fehlgeschlagene Datumsangaben zu finden.

U

Umformen mit unstack
Beim Umformen mit unstack wird eine Indexebene in Spalten verschoben. Dadurch entsteht eine breitere Tabelle, in der fehlende Kombinationen standardmäßig als fehlende Zellen dargestellt werden.
Das Umformen der Geschäftsebene mit unstack setzt die Monatssumme jedes Geschäfts neben die der anderen in Spalten.
Umwandlung der Periodenfrequenz
Die Umwandlung der Periodenfrequenz ordnet eine Periode einer anderen Frequenz zu und verwendet bei der Auswahl einer feineren Zeitspanne die gewählte Anfangs- oder Endgrenze.
Die Umwandlung der Periodenfrequenz mit how="end" kann die letzte Tagesperiode eines Monats auswählen.
Unix-Zeitstempel
Ein Unix-Zeitstempel zählt Zeiteinheiten seit dem 1. Januar 1970 um Mitternacht UTC. Um seine Zahl zu interpretieren, muss die Einheit bekannt sein.
Ein Unix-Zeitstempel in Millisekunden muss unit="ms" verwenden, selbst wenn ein Zählwert in Sekunden ähnlich aussieht.
Upsampling
Upsampling überträgt Beobachtungen auf ein feineres Zeitraster und erzeugt leere Stellen, wo zu den neuen Zeitstempeln keine ursprüngliche Beobachtung vorliegt.
Upsampling von Messwerten im Abstand von drei Tagen auf tägliche Bezeichnungen erzeugt dazwischenliegende Daten ohne Beobachtungen.
UTC
UTC ist die koordinierte Weltzeit, die gemeinsame Zeitreferenz zur Ausrichtung von Zeitpunkten über Zeitzonen hinweg ohne saisonale Sommerzeitumstellungen.
Die Umrechnung regionaler Ereignisprotokolle in UTC ermöglicht eine einheitliche Zuordnung ihrer tatsächlichen Zeitpunkte.
UTC-Zeitverschiebung
Eine UTC-Zeitverschiebung gibt an, wie weit eine lokale Uhr zu einem Zeitpunkt vor oder hinter UTC liegt. Eine feste Zeitverschiebung allein liefert jedoch keine saisonalen Regeln.
Die UTC-Zeitverschiebung +05:30 setzt eine lokale Uhr fünf Stunden und dreißig Minuten vor UTC.

V

Verzögerung
Eine Verzögerung ist ein früherer Wert, der zum Vergleich neben eine spätere Beobachtung gesetzt wird. Sein Abstand wird in Zeilen oder Kalenderzeit festgelegt.
Eine Verzögerung um eine Zeile kann mehrere Tage zurückreichen, wenn ein Sensor Lücken zwischen seinen Messwerten hat.
Vorlauf
Ein Vorlauf ist ein späterer Wert, der neben eine frühere Beobachtung gesetzt wird und so den folgenden Wert bei der aktuellen Zeilenbezeichnung verfügbar macht.
Ein Vorlauf durch shift(-1) ermöglicht es, in einer Tabelle jedes Ereignis mit dem nächsten erfassten Ereignis zu vergleichen.
Vorwärtsauffüllen
Vorwärtsauffüllen ersetzt fehlende Werte durch den zuletzt bekannten früheren Wert und eignet sich für einen Zustand, der bis zu seiner Änderung gilt.
Vorwärtsauffüllen übernimmt eine Geräteeinstellung in spätere Tage bis zu ihrer nächsten erfassten Änderung.
Vorwärtsrollen
Die Methode rollforward() eines Offsets findet den nächsten gültigen Kalenderankerpunkt am oder nach einem Datum und behält ein Datum bei, das bereits auf diesem Ankerpunkt liegt.
Das rollforward() einer MonthEnd-Regel verschiebt den 15. Januar auf den 31. Januar desselben Jahres.

W

Wachsendes Fenster
Ein wachsendes Fenster beginnt bei der ersten Beobachtung und wächst bis zur aktuellen Zeile. Es behält alle früheren gültigen Beobachtungen mit gleichem Gewicht bei.
Ein wachsendes Fenster gibt einem neuen Messwert weniger Einfluss, nachdem sich ein langer Verlauf angesammelt hat.

Z

Zeitbasierter Grouper
Ein zeitbasierter Grouper ist ein pandas-Gruppierungsobjekt, das innerhalb von groupby Regeln für Zeitintervalle neben anderen Schlüsseln wie Geschäft oder Sensor bereitstellt.
Ein Geschäftsschlüssel zusammen mit einem monatlichen zeitbasierten Grouper erhält für jedes Geschäft einen getrennten monatlichen Verlauf.
Zeitbasiertes Fenster
Ein zeitbasiertes Fenster wählt Beobachtungen innerhalb einer festen verstrichenen Zeitdauer relativ zu jedem Zeitstempel aus, sodass seine Zeilenanzahl variieren kann.
Ein zeitbasiertes Fenster von drei Tagen kann je nach Zeitpunkt eine oder mehrere Kundenbestellungen enthalten.
Zeitintervall
Ein Zeitintervall wird beim Resampling verwendet, um Beobachtungen zu gruppieren. Die Zugehörigkeit an den Grenzen und die Ausgabebezeichnung werden getrennt festgelegt.
Ein um 10:05 Uhr endendes Zeitintervall kann Messwerte nach 10:00 bis einschließlich 10:05 Uhr enthalten.
Zeitliche Auflösung
Die zeitliche Auflösung ist die für gespeicherte Zeitzählwerte verwendete Einheit, etwa Mikrosekunden oder Nanosekunden. Sie bestimmt deren Genauigkeit und Wertebereich.
Die Umwandlung einer Spalte mit Mikrosekundenauflösung in Ganzzahlen ergibt Mikrosekundenzählwerte seit der Epoche.
Zeitreihe
Eine Zeitreihe ist eine Sammlung von Beobachtungen, die mit Zeitpunkten oder Zeitspannen verknüpft sind und es ermöglichen, Werte in ihrer zeitlichen Reihenfolge zu untersuchen.
Eine Zeitreihe des stündlichen Energieverbrauchs ermöglicht es, den Bedarf zu verschiedenen Tageszeiten zu vergleichen.
Zeitstempel mit Zeitzoneninformation
Ein Zeitstempel mit Zeitzoneninformation enthält Angaben zur Zeitzone und bezeichnet einen tatsächlichen Zeitpunkt, der in einer anderen Zeitzone angezeigt werden kann, ohne sich zu ändern.
Der Zeitstempel mit Zeitzoneninformation 09:00+02:00 in Amsterdam bezeichnet dasselbe Ereignis im Juli wie 07:00 Uhr UTC.
Zeitstempel ohne Zeitzoneninformation
Ein Zeitstempel ohne Zeitzoneninformation hat keine zugeordnete Zeitzone. Er gibt eine Uhrzeit an, ohne den Ort ihrer lokalen Erfassung zu bestimmen.
Der Zeitstempel ohne Zeitzoneninformation „2025-07-01 09:00“ benötigt einen Ort, bevor er einem UTC-Ereignis zugeordnet werden kann.
Zeitzonenlokalisierung
Die Zeitzonenlokalisierung ordnet Uhrzeiten ohne Zeitzoneninformation eine Zeitzone der Erfassung zu und behält ihre angezeigten lokalen Stunden und Minuten bei.
Die Zeitzonenlokalisierung gibt einer Uhrzeit von 09:00 Uhr ohne Zeitzoneninformation die Bedeutung von Tokio, bevor sie in UTC umgerechnet wird.
Zeitzonenumrechnung
Die Zeitzonenumrechnung drückt einen bereits mit Zeitzoneninformation versehenen Zeitpunkt in einer anderen Zeitzone aus. Sie bewahrt den tatsächlichen Zeitpunkt und ändert seine lokale Uhrzeitanzeige.
Die Zeitzonenumrechnung ändert 12:00 Uhr in Amsterdam in die für dieses Datum passende UTC-Uhrzeit.
Zentriertes Fenster
Ein zentriertes Fenster platziert seine Ausgabe in der Mitte der eingehenden Beobachtungen, sodass relativ zur Ergebnisbezeichnung spätere Werte eingehen können.
Ein mit Dienstag bezeichnetes zentriertes Fenster kann am Mittwoch und Donnerstag erfasste Beobachtungen verwenden.
Zurückrollen
Die Methode rollback() eines Offsets findet den nächsten gültigen Kalenderankerpunkt am oder vor einem Datum und behält ein Datum bei, das bereits auf diesem Ankerpunkt liegt.
Das rollback() einer MonthEnd-Regel verschiebt den 15. Januar auf den 31. Dezember des Vorjahres.

#

.dt-Accessor
Der .dt-Accessor stellt Datums-, Zeit- und Zeitdauerfunktionen auf einer pandas-Spalte bereit, darunter Kalenderfelder, Rundung und Einheitenumwandlung.
Der .dt-Accessor in readings["time"].dt.hour liefert die erfasste Stunde für die Gruppierung.

Über diese Einheit

Von StudeliFehler melden

Erstelle deine eigenen Lernmaterialien

Mach aus deinen Notizen, Folien und Dokumenten Lernleitfäden, Übungsfragen, Karteikarten und 6 weitere Tools.

Jetzt starten