In vielen Data-Science-Projekten spielen Zeitinformationen eine zentrale Rolle. Ob bei Verkaufsanalysen, Website-Traffic, Finanzdaten oder Sensorwerten – Daten sind häufig zeitgestempelt. Python und Pandas bieten leistungsstarke Werkzeuge, um Datums- und Zeitwerte zu verarbeiten, analysieren und visualisieren. In diesem Teil lernst du, wie man Datumswerte einliest, berechnet, filtert und für Analysen vorbereitet.
1. Datums- und Zeittypen in Python
Python stellt das Modul datetime bereit:
from datetime import datetime, date, time, timedelta
# Aktuelles Datum und Zeit
jetzt = datetime.now()
print(jetzt) # z.B. 2025-09-23 14:30:00
# Nur Datum
heute = date.today()
print(heute) # z.B. 2025-09-23
# Zeitdifferenzen
delta = timedelta(days=7)
print(heute + delta) # Datum in 7 Tagen
datetime→ Datum + Zeitdate→ nur Datumtime→ nur Uhrzeittimedelta→ Zeitdifferenzen
2. Datumswerte in Pandas
In Pandas werden Datumswerte meist als datetime64-Typ gespeichert.
import pandas as pd
# Beispiel-DataFrame
df = pd.DataFrame({
"Datum": ["2025-09-20", "2025-09-21", "2025-09-22"],
"Verkäufe": [100, 150, 200]
})
# In Datetime konvertieren
df["Datum"] = pd.to_datetime(df["Datum"])
print(df.info())
pd.to_datetime()wandelt Strings in Datumsobjekte um- Vorteil: Mathematische Operationen und Filter auf Datum möglich
3. Zugriff auf Datumsinformationen
Nach der Konvertierung kann man auf einzelne Bestandteile zugreifen:
df["Jahr"] = df["Datum"].dt.year
df["Monat"] = df["Datum"].dt.month
df["Tag"] = df["Datum"].dt.day
df["Wochentag"] = df["Datum"].dt.day_name()
print(df)
Ergebnis:
Datum Verkäufe Jahr Monat Tag Wochentag
0 2025-09-20 100 2025 9 20 Samstag
1 2025-09-21 150 2025 9 21 Sonntag
2 2025-09-22 200 2025 9 22 Montag
- Nützlich für Zeitreihenanalysen und Aggregationen nach Wochentagen oder Monaten
4. Filtern nach Datum
# Alle Verkäufe nach dem 21.09.2025
df[df["Datum"] > "2025-09-21"]
# Verkäufe im September
df[df["Datum"].dt.month == 9]
- Kombinierbar mit anderen Bedingungen:
df[(df["Datum"].dt.month == 9) & (df["Verkäufe"] > 120)]
5. Zeitdifferenzen berechnen
df["Vorheriger_Tag"] = df["Datum"].shift(1)
df["Differenz"] = (df["Datum"] - df["Vorheriger_Tag"]).dt.days
print(df)
shift(1)→ verschiebt Zeilen um 1.dt.days→ Differenz in Tagen- Praktisch, um Intervalle oder Trends zu berechnen
6. Resampling von Zeitreihen
Bei Zeitreihendaten kann man Daten auf Tages-, Wochen- oder Monatsbasis zusammenfassen:
# Beispiel mit täglichem Datum
daten = pd.date_range(start="2025-09-01", periods=10, freq="D")
df = pd.DataFrame({"Datum": daten, "Verkäufe": [100, 120, 130, 90, 150, 160, 140, 180, 170, 200]})
df.set_index("Datum", inplace=True)
# Wöchentliche Summe
wochen = df.resample("W").sum()
print(wochen)
resample("W")→ gruppiert nach Woche- Ebenso möglich:
"M"= Monat,"D"= Tag
7. Datumsoperationen mit Timedelta
# Verkäufe um 7 Tage verschieben
df["Verkäufe_7Tage_später"] = df["Verkäufe"].shift(7)
# Zeitdifferenz in Tagen
df["Differenz"] = (df.index - df.index.min()).days
shift()→ Verschiebung für Trend- oder Vergleichsanalysentimedelta→ flexibel für Berechnungen
8. Praxisbeispiel: Verkaufsanalyse
df = pd.DataFrame({
"Datum": pd.date_range(start="2025-09-01", periods=7, freq="D"),
"Verkäufe": [100, 150, 200, 130, 170, 180, 160]
})
# Datumsinformationen extrahieren
df["Wochentag"] = df["Datum"].dt.day_name()
df["Monat"] = df["Datum"].dt.month
# Filter: Verkäufe über 150
high_sales = df[df["Verkäufe"] > 150]
# Berechnung der täglichen Differenz
df["Diff"] = df["Verkäufe"].diff()
print(df)
Ergebnis:
Datum Verkäufe Wochentag Monat Diff
0 2025-09-01 100 Montag 9 NaN
1 2025-09-02 150 Dienstag 9 50.0
2 2025-09-03 200 Mittwoch 9 50.0
...
- Zeigt Extraktion, Filterung und Berechnung von Zeitreihen
9. Tipps für Data Science
- Datumsangaben direkt beim Laden konvertieren (
parse_dates) - Zeitreihenindex setzen → erleichtert Resampling und Aggregationen
- Shift und Diff für Trendanalysen verwenden
- Wochentag, Monat, Jahr extrahieren für Gruppierungen
- Zeitzonen beachten, wenn Daten aus internationalen Quellen
Schreibe einen Kommentar