So handhaben Sie Zeitzonen und Zeitstempel mit Pandas genau
Bild vom Autor | Midjourney

Zeitbasierte Daten können einzigartig sein, wenn wir mit unterschiedlichen Zeitzonen konfrontiert sind. Aufgrund dieser Unterschiede kann die Interpretation von Zeitstempeln jedoch schwierig sein. Dieser Leitfaden hilft Ihnen bei der Verwaltung von Zeitzonen und Zeitstempeln mit der Pandas-Bibliothek in Python.

Vorbereitung

In diesem Tutorial verwenden wir das Pandas-Paket. Wir können das Paket mit dem folgenden Code installieren.

Jetzt untersuchen wir anhand praktischer Beispiele, wie man in Pandas mit zeitbasierten Daten arbeitet.

Umgang mit Zeitzonen und Zeitstempeln mit Pandas

Zeitdaten sind ein einzigartiger Datensatz, der einen zeitspezifischen Bezug zu Ereignissen bietet. Die genauesten Zeitdaten sind Zeitstempel, die detaillierte Informationen über die Zeit vom Jahr bis zur Millisekunde enthalten.

Beginnen wir mit der Erstellung eines Beispieldatensatzes.

import pandas as pd

information = {
    'transaction_id': (1, 2, 3),
    'timestamp': ('2023-06-15 12:00:05', '2024-04-15 15:20:02', '2024-06-15 21:17:43'),
    'quantity': (100, 200, 150)
}

df = pd.DataFrame(information)
df('timestamp') = pd.to_datetime(df('timestamp'))

Die Spalte „timestamp“ im obigen Beispiel enthält Zeitdaten mit einer Genauigkeit von einer Sekunde. Um diese Spalte in ein Datums-/Uhrzeitformat zu konvertieren, verwenden wir die pd.to_datetime Funktion.“

Anschließend können wir die Datums-/Uhrzeitdaten zeitzonenabhängig machen. Beispielsweise können wir die Daten in die koordinierte Weltzeit (UTC) konvertieren.

df('timestamp_utc') = df('timestamp').dt.tz_localize('UTC')
print(df)
Output>> 
  transaction_id           timestamp  quantity             timestamp_utc
0               1 2023-06-15 12:00:05     100 2023-06-15 12:00:05+00:00
1               2 2024-04-15 15:20:02     200 2024-04-15 15:20:02+00:00
2               3 2024-06-15 21:17:43     150 2024-06-15 21:17:43+00:00

Die „timestamp_utc“-Werte enthalten viele Informationen, einschließlich der Zeitzone. Wir können die vorhandene Zeitzone in eine andere umwandeln. Ich habe beispielsweise die UTC-Spalte verwendet und sie in die japanische Zeitzone geändert.

df('timestamp_japan') = df('timestamp_utc').dt.tz_convert('Asia/Tokyo')
print(df)
Output>>>
  transaction_id           timestamp  quantity             timestamp_utc  
0               1 2023-06-15 12:00:05     100 2023-06-15 12:00:05+00:00   
1               2 2024-04-15 15:20:02     200 2024-04-15 15:20:02+00:00   
2               3 2024-06-15 21:17:43     150 2024-06-15 21:17:43+00:00   

            timestamp_japan  
0 2023-06-15 21:00:05+09:00  
1 2024-04-16 00:20:02+09:00  
2 2024-06-16 06:17:43+09:00 

Mit dieser neuen Zeitzone können wir die Daten nach einer bestimmten Zeitzone filtern. Beispielsweise können wir die Daten nach der japanischen Zeit filtern.

start_time_japan = pd.Timestamp('2024-06-15 06:00:00', tz='Asia/Tokyo')
end_time_japan = pd.Timestamp('2024-06-16 07:59:59', tz='Asia/Tokyo')

filtered_df = df((df('timestamp_japan') >= start_time_japan) & (df('timestamp_japan') <= end_time_japan))

print(filtered_df)
Output>>>
  transaction_id           timestamp  quantity             timestamp_utc  
2               3 2024-06-15 21:17:43     150 2024-06-15 21:17:43+00:00   

            timestamp_japan  
2 2024-06-16 06:17:43+09:00 

Wenn wir mit Zeitreihendaten arbeiten, können wir eine Zeitreihen-Neuabtastung durchführen. Sehen wir uns ein Beispiel für eine stündliche Neuabtastung der Daten für jede Spalte in unserem Datensatz an.

resampled_df = df.set_index('timestamp_japan').resample('H').rely()

Nutzen Sie die Zeitzonendaten und Zeitstempel von Pandas, um seine Funktionen optimum zu nutzen.

Zusätzliche Ressourcen

Cornellius Yudha Wijaya ist Knowledge Science Assistant Supervisor und Datenautor. Während seiner Vollzeitbeschäftigung bei Allianz Indonesien teilt er gerne Python- und Datentipps über soziale Medien und in den Medien. Cornellius schreibt über eine Vielzahl von KI- und maschinellen Lernthemen.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert