Data Science

Maîtriser la conversion de dates avec Pandas : Techniques efficaces pour le nettoyage de données

Spread the love

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 :

  1. Conversion efficace en datetime avec pd.to_datetime()
  2. Gestion des formats complexes avec apply()
  3. Conversion simultanée de plusieurs colonnes
  4. 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é.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *