Fonction Pandas pd.to_datetime()
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ètre | Type | Description |
|---|---|---|
| arg | Entier, float, chaîne, datetime, liste, Series | Les données à convertir au type datetime. |
| errors | String | Méthode de gestion des erreurs : 'raise' (par défaut) lève une exception ; 'coerce' convertit en NaT ; 'ignore' renvoie les données d'origine. |
| dayfirst | Boolean | Si True, le jour est placé avant le mois (par ex., 01/02/2023 signifie le 2e). |
| utc | Boolean | Si True, renvoie un datetime dans le fuseau horaire UTC. |
| format | String | Spécifie le format datetime, tel que '%Y-%m-%d'. |
| unité | String | Lorsque 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
# 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 :
pd.to_datetime()Il peut reconnaître automatiquement divers formats de date et d'heure courants.- Même si l'entrée ne contient qu'une date, la partie heure est par défaut 00:00:00.
- 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
# 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 le
dayfirstouformatparamè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
# 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 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 une
OutOfBoundsDatetimeexception.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 la
pytzbibliothèque.
Autres extensions
Fonctions courantes de Pandas