Pandas & NumPy Academy · Lektion

DatetimeIndex und Periodenbereiche

Erstellen Sie mit pd.date_range einen DatetimeIndex, parsen Sie Datumszeichenfolgen und setzen Sie eine Zeitspalte für den zeitbasierten Zugriff als Index.

Lektion 1 von 413 Schritte

DatetimeIndex und Periodenbereiche ist eine kostenlose Pandas & NumPy Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Pandas & NumPy Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum Pandas spezielle Zeitwerkzeuge bietet

Zeitreihendaten zu verarbeiten bedeutet mehr, als lediglich Datumsangaben als Zeichenketten zu speichern. Sie müssen nach Zeit sortieren, Datumsbereiche auswählen, auf andere Frequenzen resamplen und Bestandteile wie Monat und Wochentag extrahieren können. Pandas ermöglicht dies mit dem DatetimeIndex — einem Index aus datetime64-Werten —, der spezielle zeitabhängige Operationen ermöglicht, die bei gewöhnlichen Integer- oder String-Indizes nicht verfügbar sind.

Einen DatetimeIndex mit pd.date_range() erstellen

pd.date_range(start, end, freq) erzeugt eine Folge gleichmäßig verteilter Datumsangaben. Der Parameter freq legt das Intervall mithilfe von Offset-Aliasen fest: 'D' für Tag, 'h' für Stunde, 'ME' für Monatsende, 'W' für Woche und 'YE' für Jahresende. Sie können entweder end oder periods (die Anzahl der Zeitstempel) übergeben — nicht beides.

import pandas as pd

# Daily dates for January 2024
dates = pd.date_range(start='2024-01-01', end='2024-01-07', freq='D')
print(dates)
# DatetimeIndex(['2024-01-01', '2024-01-02', '2024-01-03',
#                '2024-01-04', '2024-01-05', '2024-01-06', '2024-01-07'],
#               dtype='datetime64[ns]', freq='D')

# 12 month-end dates
months = pd.date_range(start='2024-01-31', periods=12, freq='ME')
print(months[:3])

Einen DatetimeIndex für einen DataFrame festlegen

Um zeitbasierte Operationen zu ermöglichen, legen Sie Ihre Datumsspalte mit set_index() als Index des DataFrames fest, nachdem Sie sie mit pd.to_datetime() in datetime64 umgewandelt haben. Sobald der Index ein DatetimeIndex ist, können Sie partielle String-Indizierung (df['2024-01']), Datumsbereichs-Slicing und alle zeitabhängigen Methoden verwenden.

df = pd.DataFrame({
    'date':  ['2024-01-01', '2024-01-02', '2024-01-03'],
    'value': [10, 15, 12]
})

df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
print(df)
#             value
# date
# 2024-01-01     10
# 2024-01-02     15
# 2024-01-03     12
print(type(df.index))  # DatetimeIndex

Partielle String-Indizierung

Eine der praktischsten Funktionen eines DatetimeIndex ist die partielle String-Indizierung. Sie können Zeilen nach Jahr, Monat oder Datum auswählen, indem Sie einen unvollständigen Datumsstring an .loc[] übergeben. Beispielsweise gibt df.loc['2024-01'] alle Zeilen aus dem Januar 2024 zurück, während df.loc['2024'] alle Zeilen aus dem Jahr 2024 zurückgibt. Ein expliziter Vergleich von Spaltenwerten ist nicht erforderlich.

# Create a larger date-indexed Series
s = pd.Series(
    range(365),
    index=pd.date_range('2024-01-01', periods=365, freq='D')
)

# Select all of January 2024
print(s.loc['2024-01'].shape)  # (31,)

# Select a specific date range
print(s.loc['2024-03-01':'2024-03-07'])

pd.to_datetime() zum Parsen

pd.to_datetime() wandelt Zeichenketten, Ganzzahlen (Unix-Zeitstempel) oder Datumsspalten mit gemischten Formaten in datetime64 um. Übergeben Sie format, um das exakte Muster anzugeben, wenn die Datumsangaben ein nicht standardmäßiges Format haben (z. B. '%d/%m/%Y'). Verwenden Sie errors='coerce', um nicht parsebare Werte in NaT (Not a Time) umzuwandeln, anstatt einen Fehler auszulösen.

# Parse standard ISO format
print(pd.to_datetime('2024-06-15'))

# Parse non-standard format
print(pd.to_datetime('15/06/2024', format='%d/%m/%Y'))

# Handle mixed/bad data gracefully
mixed = pd.to_datetime(['2024-01-01', 'bad_date', '2024-06-15'],
                       errors='coerce')
print(mixed)  # NaT for 'bad_date'

Der .dt-Accessor für Datumskomponenten

Wenn eine DataFrame-Spalte (nicht der Index) datetime64-Werte enthält, stellt der .dt-Accessor alle Eigenschaften und Methoden für Datum und Uhrzeit vektorisiert für diese Spalte bereit. Verwenden Sie ihn, um ohne Schleifen beispielsweise .dt.year, .dt.month, .dt.day, .dt.day_of_week und .dt.hour zu extrahieren. Wenn sich die Datumsangaben im Index befinden, verwenden Sie direkt df.index.year.

df_col = pd.DataFrame({'date': pd.date_range('2024-01-01', periods=5, freq='D'),
                       'value': [10, 15, 12, 18, 14]})

df_col['year']  = df_col['date'].dt.year
df_col['month'] = df_col['date'].dt.month
df_col['dow']   = df_col['date'].dt.day_of_week  # 0=Monday
df_col['week']  = df_col['date'].dt.isocalendar().week
print(df_col.head())

Periodenbereiche mit pd.period_range()

Ein PeriodIndex repräsentiert Zeitintervalle statt bestimmter Zeitstempel. pd.period_range(start, periods, freq) erstellt monatliche, vierteljährliche oder jährliche Perioden. Eine Periode wie Period('2024-01', 'M') steht für den gesamten Januar 2024 und nicht nur für dessen Anfangsdatum. Ein PeriodIndex ist für Finanzberichte nützlich, bei denen Sie in Quartalen oder Monaten denken.

# Monthly periods
periods = pd.period_range('2024-01', periods=6, freq='M')
print(periods)
# PeriodIndex(['2024-01', '2024-02', '2024-03',
#              '2024-04', '2024-05', '2024-06'],
#             dtype='period[M]')

# Quarterly periods
quarters = pd.period_range('2024Q1', periods=4, freq='Q')
print(quarters)  # [2024Q1, 2024Q2, 2024Q3, 2024Q4]

Zwischen Timestamp und Period konvertieren

Sie können einen DatetimeIndex mit to_period(freq) in einen PeriodIndex und mit to_timestamp() wieder zurückkonvertieren. Die Umwandlung in Perioden ist nützlich, wenn Sie Zeilen nach Monat oder Quartal statt nach einem bestimmten Tag beschriften möchten. Dadurch werden Gruppierung und Aggregation bei kalenderbasierten Analysen intuitiver.

daily_idx = pd.date_range('2024-01-15', periods=5, freq='D')
print('DatetimeIndex:', daily_idx[:3])

# Convert to monthly periods
monthly_idx = daily_idx.to_period('M')
print('PeriodIndex:', monthly_idx[:3])
# PeriodIndex(['2024-01', '2024-01', ...], dtype='period[M]')

# Convert back to timestamps (start of period)
print(monthly_idx.to_timestamp()[:3])

Umgang mit Zeitzonen

Zeitreihen aus der Praxis enthalten häufig Zeitzoneninformationen. Pandas unterstützt zeitzonenbewusste DatetimeIndex-Objekte mit tz_localize() (eine Zeitzone an naive Zeitstempel anhängen) und tz_convert() (zwischen Zeitzonen konvertieren). Arbeiten Sie intern immer mit UTC und konvertieren Sie erst für die Anzeige in die lokale Zeit, um Fehler durch die Mehrdeutigkeit bei der Sommerzeit zu vermeiden.

naive = pd.date_range('2024-01-01', periods=3, freq='D')
print('Naive:', naive.tz)

# Attach timezone (localize)
utc = naive.tz_localize('UTC')
print('UTC:', utc)

# Convert to New York time
ny = utc.tz_convert('America/New_York')
print('NY:', ny[:2])

DatetimeIndex prüfen und sortieren

Zeitreihenoperationen wie Resampling und Slicing erfordern einen sortierten (monoton steigenden) DatetimeIndex. Prüfen Sie dies mit df.index.is_monotonic_increasing und sortieren Sie bei Bedarf mit df.sort_index(). Ein unsortierter DatetimeIndex kann beim Resampling und bei Fensterfunktionen unauffällige Fehler oder unerwartete Ergebnisse verursachen.

import numpy as np

df_unsorted = pd.DataFrame(
    {'value': [10, 15, 12]},
    index=pd.to_datetime(['2024-01-03', '2024-01-01', '2024-01-02'])
)
print('Sorted:', df_unsorted.index.is_monotonic_increasing)  # False

df_sorted = df_unsorted.sort_index()
print('After sort:', df_sorted.index.is_monotonic_increasing)  # True
print(df_sorted)

Praxisbeispiel: Einen Zeitreihen-DataFrame erstellen

Hier sehen Sie ein vollständiges Muster zum Erstellen eines zeitindizierten DataFrames aus Rohdaten: Datumsangaben parsen, den Index festlegen, sortieren und die Indexfrequenz überprüfen. Diese Einrichtung bildet die Grundlage für alle Zeitreihenanalysen in den folgenden Lektionen — Resampling, gleitende Mittelwerte und Verzögerungsmerkmale setzen alle einen sauberen, sortierten DatetimeIndex voraus.

import numpy as np

# Simulate loading raw data
np.random.seed(42)
dates = pd.date_range('2024-01-01', periods=30, freq='D')
df_ts = pd.DataFrame({'sales': np.random.randint(100, 500, 30)}, index=dates)

df_ts.index.name = 'date'
print('Shape:', df_ts.shape)
print('Freq:', df_ts.index.freq)
print('Sorted:', df_ts.index.is_monotonic_increasing)
print(df_ts.head())

Kurzer Check

Testen Sie Ihr Verständnis von DatetimeIndex und Periodenbereichen aus dieser Lektion.

Zusammenfassung der Lektion

In dieser Lektion haben Sie gelernt, wie Sie mit pd.date_range() einen DatetimeIndex erstellen und mit pd.to_datetime() Datumsangaben parsen, wie Sie die partielle String-Indizierung für eine intuitive Datumsauswahl verwenden, worin der Unterschied zwischen den Typen Timestamp und Period besteht und wie Sie mit Zeitzonen umgehen. Als Nächstes untersuchen Sie Resampling, um die Frequenz einer Zeitreihe zu ändern.

Kostenlos starten

Lerne Python mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „DatetimeIndex und Periodenbereiche“ kostenlos?

Ja — der vollständige Text von „DatetimeIndex und Periodenbereiche“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Pandas & NumPy Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „DatetimeIndex und Periodenbereiche“?

Erstellen Sie mit pd.date_range einen DatetimeIndex, parsen Sie Datumszeichenfolgen und setzen Sie eine Zeitspalte für den zeitbasierten Zugriff als Index. Du übst Pandas & NumPy Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Pandas & NumPy Academy zu starten?

Keine Vorkenntnisse erforderlich. Pandas & NumPy Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „DatetimeIndex und Periodenbereiche“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Pandas & NumPy Academy-Lektion Code schreiben und ausführen?

Ja. Jede Pandas & NumPy Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. DatetimeIndex und Periodenbereiche
  2. Zeitreihen neu abtasten
  3. Verschiebungen und Lag-Features
  4. Zeitmerkmale extrahieren
← Zurück zu Pandas & NumPy Academy