Pandas est une puissante librairie Python pour la manipulation et l’analyse de données. Travailler avec les dates et les heures est une tâche courante, et souvent, vos données peuvent contenir des informations de date et d’heure sous forme de chaînes de caractères ou d’autres formats non-datetime. Cet article présente plusieurs techniques efficaces pour convertir les colonnes de DataFrame Pandas en type de données datetime, facilitant ainsi considérablement l’analyse et la manipulation de séries temporelles.
Table des matières :
- Conversion efficace en datetime avec
pd.to_datetime()
- Gestion des formats complexes avec
apply()
- Conversion simultanée de plusieurs colonnes
- Utilisation de
astype()
pour les conversions simples
1. Conversion efficace en datetime avec pd.to_datetime()
L’approche la plus simple et la plus recommandée consiste à utiliser la fonction pd.to_datetime()
. Cette fonction est très polyvalente et capable de gérer une grande variété de formats de date et d’heure.
import pandas as pd
data = {'date_str': ['2024-03-08', '2024-03-09', '2024-03-10']}
df = pd.DataFrame(data)
# Conversion de la colonne 'date_str' en datetime
df['date'] = pd.to_datetime(df['date_str'])
print(df)
print(df.dtypes)
Cet extrait de code crée un DataFrame avec une colonne de chaînes de caractères de dates. pd.to_datetime()
déduit automatiquement le format et convertit les chaînes de caractères en objets datetime. La sortie dtypes
confirme la conversion réussie. pd.to_datetime()
gère également les formats avec des composants horaires et offre une gestion des erreurs via le paramètre errors
(par exemple, ‘coerce’ pour remplacer les dates invalides par NaT).
2. Gestion des formats complexes avec apply()
La méthode apply()
offre une flexibilité accrue, notamment lorsqu’il s’agit de formats de date complexes ou de logique d’analyse personnalisée.
import pandas as pd
data = {'date_str': ['Mar 8, 2024', 'Mar 9, 2024', 'Mar 10, 2024']}
df = pd.DataFrame(data)
# Fonction personnalisée pour analyser la chaîne de caractères de date
def parse_date(date_str):
return pd.to_datetime(date_str, format='%b %d, %Y')
df['date'] = df['date_str'].apply(parse_date)
print(df)
print(df.dtypes)
Ici, une fonction personnalisée parse_date
est définie pour gérer un format de date spécifique. La méthode apply()
applique cette fonction à chaque élément de la colonne ‘date_str’. Cette approche est avantageuse lorsqu’il s’agit de formats de date incohérents ou nécessitant une gestion spécialisée.
3. Conversion simultanée de plusieurs colonnes
La méthode apply()
peut être étendue pour convertir plusieurs colonnes à la fois.
import pandas as pd
data = {'date_str': ['Mar 8, 2024', 'Mar 9, 2024', 'Mar 10, 2024'],
'time_str': ['10:00:00', '12:30:00', '14:45:00']}
df = pd.DataFrame(data)
def parse_date_time(row):
return pd.to_datetime(row['date_str'] + ' ' + row['time_str'], format='%b %d, %Y %H:%M:%S')
df['datetime'] = df.apply(parse_date_time, axis=1)
print(df)
print(df.dtypes)
Cet exemple combine les chaînes de caractères de date et d’heure de colonnes distinctes. L’argument axis=1
dans apply()
indique l’application de la fonction ligne par ligne.
4. Utilisation de astype()
pour les conversions simples
La méthode astype()
offre une méthode de conversion concise, mais elle est moins flexible que pd.to_datetime()
. Elle est plus efficace lorsque vos dates sont déjà dans un format que Pandas peut interpréter directement.
import pandas as pd
data = {'date_str': ['2024-03-08', '2024-03-09', '2024-03-10']}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date_str']) #Conversion préalable en objet datetime avec pd.to_datetime pour plus de flexibilité
df['date'] = df['date'].astype('datetime64[ns]') #On peut maintenant utiliser astype
print(df)
print(df.dtypes)
Bien que astype
fournisse une conversion directe, pd.to_datetime
est généralement préféré en raison de sa meilleure gestion des erreurs et de sa flexibilité de format. Notez qu’une conversion préliminaire à l’aide de pd.to_datetime
est nécessaire avant d’appliquer astype
; sinon, une erreur se produira.
La méthode optimale dépend de la complexité de vos données et de vos besoins spécifiques. Pour la plupart des scénarios, pd.to_datetime()
offre le meilleur équilibre entre efficacité et flexibilité. Cependant, la méthode apply()
offre des capacités de fonction personnalisée si nécessaire, et astype
est une solution concise pour les cas simples où les données sont déjà dans un format approprié.