Fonction Pandas pd.to_datetime()

Pandas 通用函数Fonctions courantes de Pandas


pd.to_datetime()est une fonction de la bibliothèque Pandas utilisée pourconvertir les données au type datetimeElle peut convertir des données dans divers formats, tels que des chaînes de caractères, des horodatages Unix, etc., au type datetime64 de Pandas.

Le traitement des dates et heures est une tâche courante dans l'analyse de données. Après conversion au type datetime, vous pouvez facilement effectuer des opérations telles que l'extraction de dates, l'arithmétique temporelle et la gestion des fuseaux horaires.

Explication du terme: to_datetimeCela signifie « convertir en datetime », c'est-à-dire convertir uniformément des données temporelles dans divers formats en objets datetime standard.


Syntaxe de base et paramètres

pd.to_datetime()est une fonction de premier niveau de la bibliothèque Pandas, utilisée pour convertir des données temporelles dans divers formats au type datetime.

Format de syntaxe

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

Description du paramètre

ParamètreTypeDescription
argEntier, float, chaîne, datetime, liste, SeriesLes données à convertir au type datetime.
errorsStringMéthode de gestion des erreurs : 'raise' (par défaut) lève une exception ; 'coerce' convertit en NaT ; 'ignore' renvoie les données d'origine.
dayfirstBooleanSi True, le jour est placé avant le mois (par ex., 01/02/2023 signifie le 2e).
utcBooleanSi True, renvoie un datetime dans le fuseau horaire UTC.
formatStringSpécifie le format datetime, tel que '%Y-%m-%d'.
unitéStringLorsque arg est numérique, spécifie l'unité : 'D', 's', 'ms', 'us', 'ns'.

Description de la valeur de retour

  • Valeur de retour: Renvoie une Series de type datetime64.
  • Effet: Convertit les données d'entrée en type datetime de Pandas, ce qui facilite les opérations datetime.

Exemples

Maîtrisons à fond, à travers une série d'exemples du simple au complexe,pd.to_datetime()son utilisation.

Exemple 1 : Utilisation de base - Conversion de chaînes en datetime

Exemples

import pandas as pd

# 1. Créer une Series de chaînes datetime
dates = pd.Series([
    '2023-01-01',
    '2023-01-02',
    '2023-01-03',
    '2023-01-04',
    '2023-01-05'
])

print("=== Série originale (type:", dates.dtype, ")===")
print(dates)

# 2. Utilisez pd.to_datetime() pour convertir en type datetime
result = pd.to_datetime(dates)
print("\n=== Après conversion avec pd.to_datetime() (type:", result.dtype, ")===")
print(result)

# 3. Prend en charge plusieurs formats
dates_mixed = pd.Series([
    '2023-01-01',
    '2023/02/03',
    '01.04.2023',
    'May 6, 2023'
])
print("\n=== Analyse automatique de plusieurs formats ===)
print(pd.to_datetime(dates_mixed))

# 4. Informations contenant l'heure
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=== Informations contenant l'heure ===)
print(result_datetime)

Résultat de l'exécution :

=== 原始 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

Explication du code :

  1. pd.to_datetime()Il peut reconnaître automatiquement divers formats de date et d'heure courants.
  2. Même si l'entrée ne contient qu'une date, la partie heure est par défaut 00:00:00.
  3. Il peut gérer des formats de date avec différents séparateurs, tels que les caractères chinois, les points et les barres obliques.

Exemple 2 : Gestion de différents formats de date et du paramètre dayfirst

Pour les formats de date dans différentes régions, vous pouvez utiliser ledayfirstparamètre ou leformatparamètre.

Exemples

import pandas as pd

# 1. Date au format européen (mois/jour/année)
europe_dates = pd.Series(['01/02/2023', '02/03/2023', '03/04/2023'])

print("=== Date au format européen (01/02/2023 interprétée comme le 2e) ===")
print("Par défaut (mois/jour/année) :", pd.to_datetime(europe_dates).dt.day.tolist())
print("dayfirst=True:", pd.to_datetime(europe_dates, dayfirst=True).dt.day.tolist())

# 2. Utilisez le paramètre format pour spécifier le format exact
print("\n=== Utilisation du paramètre format ===)
result = pd.to_datetime('2023-06-15 14:30:00', format='%Y-%m-%d %H:%M:%S')
print(f"Résultat de la conversion : {result}")

# 3. Analyse de format complexe
complex_dates = pd.Series(['December 25, 2023', '15/08/2023', '2023-05-01'])
print("\n=== Analyse automatique des formats mixtes ===)
print(pd.to_datetime(complex_dates, dayfirst=True))

Résultat de l'exécution :

=== 欧洲格式日期(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

Explication du code :

  • formatLe paramètre spécifie le format exact, indiquant clairement à Pandas comment analyser la date, ce qui évite toute ambiguïté.
  • L'analyse automatique est très puissante, mais lorsqu'il y a une ambiguïté (comme l'interprétation de 01/02/2023), vous devez utiliser ledayfirstouformatparamètre pour spécifier explicitement.

Exemple 3 : Conversion d'horodatages Unix en datetime

Les horodatages exportés depuis des bases de données ou des systèmes peuvent être convertis à l'aide deunitparamètre.

Exemples

import pandas as pd

# 1. Horodatage Unix (secondes)
timestamps = pd.Series([1672531200, 1672617600, 1672704000])

print("=== Horodatage Unix (secondes) ===")
print(timestamps.values)

# 2. Convertir en datetime
result = pd.to_datetime(timestamps, unit='s')
print("\n=== Après la conversion par pd.to_datetime(..., unit='s') ===)
print(result)

# 3. Horodatage Unix (millisecondes)
timestamps_ms = pd.Series([1672531200000, 1672617600000, 1672704000000])
result_ms = pd.to_datetime(timestamps_ms, unit='ms')
print("\n=== Horodatage en millisecondes ===)
print(result_ms)

# 4. Convertir à partir d'une origine fixe
print("\n=== Calculé à partir du 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)

Résultat de l'exécution :

=== 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

Explication du code :

  • unit='s'Indique que l'unité de la valeur est la seconde (horodatage Unix).
  • unit='ms'Indique un horodatage en millisecondes.
  • originLe paramètre peut spécifier l'heure de départ, utilisée pour calculer le temps relatif.

Exemple 4 : Gestion des dates invalides avec le paramètre errors

Exemples

import pandas as pd
import numpy as np

# 1. Série contenant des dates invalides
mixed_dates = pd.Series(['2023-01-01', '2023-02-30', 'invalid', '2023-03-15'])

print("=== Série contenant des dates invalides ===")
print(mixed_dates)

# 2. errors='raise' (par défaut) - lève une exception
print("\n=== errors='raise' ===")
try:
    pd.to_datetime(mixed_dates, errors='raise')
except Exception as e:
    print(f"Exception: {type(e).__name__}")

# 3. errors='coerce' - convertit les dates invalides en NaT
print("\n=== errors='coerce' ===")
result = pd.to_datetime(mixed_dates, errors='coerce')
print(result)

# 4. errors='ignore' - conserve tel quel
print("\n=== errors='ignore' ===")
result_ignore = pd.to_datetime(mixed_dates, errors='ignore')
print(result_ignore)
print(f"Type : {result_ignore.dtype}")

Résultat de l'exécution :

=== 包含无效日期的 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

Explication du code :

  • errors='coerce'Convertit à la fois les dates invalides et les valeurs non analysables en NaT (Not a Time, équivalent à une valeur manquante).
  • Ceci est très utile lors du traitement de données sales, car cela maintient la continuité du traitement des données.

Notes

Remarque importante :

  • Si une valeur dans les données dépasse la plage datetime, cela lèvera uneOutOfBoundsDatetimeexception.
  • formatLe paramètre peut spécifier explicitement le format de date. Il est recommandé de l'utiliser lors du traitement de grandes quantités de données pour améliorer les performances.
  • L'objet datetime converti peut utiliser l'.dtaccesseur pour des opérations datetime riches.
  • La gestion des fuseaux horaires nécessite d'installer lapytzbibliothèque.

Python math 模块Fonctions courantes de Pandas

Autres extensions