Pandas pd.to_datetime()-Funktion

Pandas 通用函数Gängige Pandas-Funktionen


pd.to_datetime()ist eine Funktion in der Pandas-Bibliothek, mit derDaten in den datetime-Typ konvertiert werdenSie kann Daten in verschiedenen Formaten, wie Zeichenfolgen, Unix-Zeitstempeln usw., in den datetime64-Typ von Pandas konvertieren.

Datetime-Verarbeitung ist eine häufige Aufgabe in der Datenanalyse. Nach der Konvertierung in den datetime-Typ können Sie bequem Vorgänge wie Datumsextraktion, Zeitarithmetik und Zeitzonenbehandlung durchführen.

Begriffserklärung: to_datetimeEs bedeutet "in datetime konvertieren", d. h. Zeitdaten in verschiedenen Formaten einheitlich in standardmäßige datetime-Objekte umzuwandeln.


Grundlegende Syntax und Parameter

pd.to_datetime()ist eine Top-Level-Funktion in der Pandas-Bibliothek, die verwendet wird, um Zeitdaten in verschiedenen Formaten in den datetime-Typ zu konvertieren.

Syntaxformat

pd.to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False, utc=False, format=None, unit='ns')

Parameterbeschreibung

ParameterTypeBeschreibung
argGanzzahl, Gleitkommazahl, Zeichenfolge, datetime, Liste, SeriesDie Daten, die in den datetime-Typ konvertiert werden sollen.
errorsStringFehlerbehandlungsmethode: 'raise' (Standard) löst eine Ausnahme aus; 'coerce' konvertiert in NaT; 'ignore' gibt die Originaldaten zurück.
dayfirstBooleanWenn True, wird der Tag vor dem Monat platziert (z. B. bedeutet 01/02/2023 den 2.).
utcBooleanWenn True, wird ein datetime in der UTC-Zeitzone zurückgegeben.
formatStringGibt das datetime-Format an, wie z. B. '%Y-%m-%d'.
EinheitStringWenn arg numerisch ist, gibt die Einheit an: 'D', 's', 'ms', 'us', 'ns'.

Beschreibung des Rückgabewerts

  • Rückgabewert: Gibt eine Series vom Typ datetime64 zurück.
  • Auswirkung: Konvertiert die Eingabedaten in den Pandas-datetime-Typ, was die Durchführung von datetime-Operationen erleichtert.

Beispiele

Lass uns durch eine Reihe von Beispielen von einfach bis komplex gründlich meistern,pd.to_datetime()seine Verwendung gründlich beherrschen.

Beispiel 1: Grundlegende Verwendung – Konvertieren von Zeichenfolgen in Datetime

Beispiele

import pandas as pd

# 1. Eine Series aus datetime-Strings erstellen
dates = pd.Series([
    '2023-01-01',
    '2023-01-02',
    '2023-01-03',
    '2023-01-04',
    '2023-01-05'
])

print("=== Ursprüngliche Serie (Typ:", dates.dtype, ")===")
print(dates)

# 2. Verwende pd.to_datetime(), um in den datetime-Typ zu konvertieren
result = pd.to_datetime(dates)
print("\n=== Nach pd.to_datetime()-Konvertierung (Typ:", result.dtype, ")===")
print(result)

# 3. Unterstützt mehrere Formate
dates_mixed = pd.Series([
    '2023-01-01',
    '2023/02/03',
    '01.04.2023',
    'May 6, 2023'
])
print("\n=== Automatisches Parsen mehrerer Formate ===)
print(pd.to_datetime(dates_mixed))

# 4. Informationen mit Zeitangabe
dates_with_time = pd.Series([
    '2023-01-01 12:30:45',
    '2023-02-03 08:15:30'
])
result_datetime = pd.to_datetime(dates_with_time)
print("\n=== Informationen mit Zeit ===)
print(result_datetime)

Run result:

=== 原始 Series(类型: object )===
0    2023-01-01
1    2023-01-02
2    2023-01-03
3    2023-01-04
4    2023-01-05
dtype: object

=== pd.to_datetime() 转换后(类型: datetime64[ns] )===
0   2023-01-01 00:00:00
1   2023-01-02 00:00:00
2   2023-01-03 00:00:00
3   2023-01-04 00:00:00
4   2023-01-05 00:00:00

=== 多种格式自动解析 ===
0   2023-01-01 00:00:00
1   2023-02-03 00:00:00
2   2023-04-01 00:00:00
3   2023-05-06 00:00:00

=== 包含时间的信息 ===
0   2023-01-01 12:30:45
1   2023-02-03 08:15:30

Code-Erklärung:

  1. pd.to_datetime()Es kann verschiedene gängige Datetime-Formate automatisch erkennen.
  2. Selbst wenn die Eingabe nur ein Datum enthält, wird der Zeitanteil standardmäßig auf 00:00:00 gesetzt.
  3. Es kann Datumsformate mit verschiedenen Trennzeichen verarbeiten, wie chinesische Schriftzeichen, Punkte und Schrägstriche.

Beispiel 2: Umgang mit verschiedenen Datumsformaten und dem dayfirst-Parameter

Für Datumsformate in verschiedenen Regionen können Sie dendayfirstParameter oder denformatParameter überschrieben werden.

Beispiele

import pandas as pd

# 1. Europäisches Datumsformat (Monat/Tag/Jahr)
europe_dates = pd.Series(['01/02/2023', '02/03/2023', '03/04/2023'])

print("=== Europäisches Datumsformat (01/02/2023 als der 2. interpretiert) ===")
print("Standard (Monat/Tag/Jahr):", pd.to_datetime(europe_dates).dt.day.tolist())
print("dayfirst=True:", pd.to_datetime(europe_dates, dayfirst=True).dt.day.tolist())

# 2. Verwenden Sie den Parameter format, um das genaue Format anzugeben
print("\n=== Verwendung des format-Parameters ===)
result = pd.to_datetime('2023-06-15 14:30:00', format='%Y-%m-%d %H:%M:%S')
print(f"Konvertierungsergebnis: {result}")

# 3. Komplexes Parsen von Formaten
complex_dates = pd.Series(['December 25, 2023', '15/08/2023', '2023-05-01'])
print("\n=== Automatisches Parsen gemischter Formate ===)
print(pd.to_datetime(complex_dates, dayfirst=True))

Run result:

=== 欧洲格式日期(01/02/2023 理解为 2 号)===
默认: [1, 2, 3]
dayfirst=True: [2, 3, 4]

=== 使用 format 参数 ===
转换结果: 2023-06-15 14:30:00

=== 混合格式自动解析 ===
0   2023-12-25 00:00:00
1   2023-08-15 00:00:00
2   2023-05-01 00:00:00

Code-Erklärung:

  • formatDer Parameter gibt das genaue Format an und teilt Pandas eindeutig mit, wie das Datum zu parsen ist, wodurch Mehrdeutigkeit vermieden wird.
  • Die automatische Analyse ist sehr leistungsstark, aber wenn Mehrdeutigkeit besteht (z. B. bei der Interpretation von 01/02/2023), müssen Sie dendayfirstoderformatParameter explizit angeben.

Beispiel 3: Unix-Zeitstempel in Datetime umwandeln

Aus Datenbanken oder Systemen exportierte Zeitstempel können mit derunitParameter überschrieben werden.

Beispiele

import pandas as pd

# 1. Unix-Zeitstempel (Sekunden)
timestamps = pd.Series([1672531200, 1672617600, 1672704000])

print("=== Unix-Zeitstempel (Sekunden) ===")
print(timestamps.values)

# 2. In Datetime umwandeln
result = pd.to_datetime(timestamps, unit='s')
print("\n=== Nach der Konvertierung mit pd.to_datetime(..., unit='s') ===)
print(result)

# 3. Unix-Zeitstempel (Millisekunden)
timestamps_ms = pd.Series([1672531200000, 1672617600000, 1672704000000])
result_ms = pd.to_datetime(timestamps_ms, unit='ms')
print("\n=== Zeitstempel auf Millisekundenebene ===)
print(result_ms)

# 4. Aus einem festen Ursprung konvertieren
print("\n=== Berechnet ab 2023-01-01 ===)
days = pd.Series([0, 1, 2, 3, 4])
result_origin = pd.to_datetime(days, origin='2023-01-01', unit='D')
print(result_origin)

Run result:

=== Unix 时间戳(秒)===
[1672531200 1672617600 1672704000]

=== pd.to_datetime(..., unit='s') 转换后 ===
0   2023-01-01 00:00:00
1   2023-01-02 00:00:00
2   2023-01-03 00:00:00

=== 毫秒级时间戳 ===
0   2023-01-01 00:00:00
1   2023-01-02 00:00:00
2   2023-01-03 00:00:00

=== 从 2023-01-01 开始计算 ===
0   2023-01-01
1   2023-01-02
2   2023-01-03
3   2023-01-04
4   2023-01-05

Code-Erklärung:

  • unit='s'Bedeutet, dass die Einheit des Werts Sekunden ist (Unix-Zeitstempel).
  • unit='ms'Bedeutet einen Millisekunden-Zeitstempel.
  • originDer Parameter kann die Startzeit angeben, die zur Berechnung der relativen Zeit verwendet wird.

Beispiel 4: Umgang mit ungültigen Datumsangaben mit dem errors-Parameter

Beispiele

import pandas as pd
import numpy as np

# 1. Series mit ungültigen Datumsangaben
mixed_dates = pd.Series(['2023-01-01', '2023-02-30', 'invalid', '2023-03-15'])

print("=== Series mit ungültigen Datumsangaben ===")
print(mixed_dates)

# 2. errors='raise' (Standard) - löst eine Ausnahme aus
print("\n=== errors='raise' ===")
try:
    pd.to_datetime(mixed_dates, errors='raise')
except Exception as e:
    print(f"Ausnahme: {type(e).__name__}")

# 3. errors='coerce' - konvertiert ungültige Datumsangaben in NaT
print("\n=== errors='coerce' ===")
result = pd.to_datetime(mixed_dates, errors='coerce')
print(result)

# 4. errors='ignore' - bleibt unverändert
print("\n=== errors='ignore' ===")
result_ignore = pd.to_datetime(mixed_dates, errors='ignore')
print(result_ignore)
print(f"Type: {result_ignore.dtype}")

Run result:

=== 包含无效日期的 Series ===
0    2023-01-01
1    2023-02-30
2    invalid
3    2023-03-15

=== errors='raise' ===
异常: OutOfBoundsDatetime

=== errors='coerce' ===
0   2023-01-01 00:00:00
1                    NaT
2                    NaT
3   2023-03-15 00:00:00

=== errors='ignore' ===
0    2023-01-01
1    2023-02-30
2    invalid
3    2023-03-15
dtype: object

Code-Erklärung:

  • errors='coerce'Konvertiert sowohl ungültige Datumsangaben als auch nicht parsebare Werte in NaT (Not a Time, entspricht einem fehlenden Wert).
  • Dies ist sehr nützlich beim Umgang mit unsauberen Daten, da es die Kontinuität der Datenverarbeitung aufrechterhält.

Hinweise

Wichtiger Hinweis:

  • Wenn ein Wert in den Daten den Datetime-Bereich überschreitet, wird einOutOfBoundsDatetimeAusnahme.
  • formatDer Parameter kann das Datumsformat explizit angeben. Es wird empfohlen, ihn bei der Verarbeitung großer Datenmengen zu verwenden, um die Leistung zu verbessern.
  • Das konvertierte datetime-Objekt kann den.dtAccessor für umfangreiche datetime-Operationen verwenden.
  • Die Behandlung von Zeitzonen erfordert die Installation derpytzBibliothek.

Python math 模块Gängige Pandas-Funktionen

Andere Erweiterungen