Data Science

Application Efficace de Fonctions à Plusieurs Colonnes de DataFrame Pandas

Spread the love

Pandas est une puissante bibliothèque Python pour la manipulation et l’analyse de données. Un besoin fréquent est d’appliquer la même fonction à plusieurs colonnes d’un DataFrame. Cet article décrit des méthodes efficaces pour y parvenir, en évitant le traitement répétitif colonne par colonne.

Table des matières

Opérations vectorisées : l’approche la plus rapide

Pour les opérations numériques, les fonctions vectorisées de Pandas offrent une vitesse supérieure. Elles opèrent directement sur des colonnes entières, en tirant parti du traitement de tableaux optimisé de NumPy. Ceci est significativement plus rapide que les méthodes itératives pour les grands ensembles de données.


import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)

# Addition des colonnes A et B élément par élément
df['Sum_AB'] = df['A'] + df['B']
print(df)

# Mise au carré des valeurs de la colonne A
df['A_Squared'] = df['A']**2
print(df)

La méthode apply() : Opérations par ligne

La méthode apply() est polyvalente pour appliquer des fonctions ligne par ligne (axis=1) ou colonne par colonne (axis=0). Ceci est idéal lorsque votre fonction nécessite l’accès à plusieurs colonnes au sein de chaque ligne.


# Fonction pour calculer le produit des colonnes A et B
def multiply_ab(row):
  return row['A'] * row['B']

df['Product_AB'] = df.apply(multiply_ab, axis=1)
print(df)

applymap() : Transformations élément par élément

applymap() applique une fonction à chaque élément individuel d’un DataFrame (ou de colonnes sélectionnées). Elle est efficace pour les transformations simples, élément par élément.


# Appliquer une fonction personnalisée aux éléments des colonnes 'A' et 'C'
def custom_function(x):
    if x > 5:
        return x * 2
    else:
        return x

df[['A', 'C']] = df[['A', 'C']].applymap(custom_function)
print(df)

Fonctions lambda pour plus de concision

Les fonctions lambda offrent un moyen compact de définir des fonctions simples et anonymes en ligne, améliorant la lisibilité lorsqu’elles sont utilisées avec apply() ou d’autres méthodes.


# Utilisation d'une fonction lambda avec apply pour plus de concision
df['Sum_AB_Lambda'] = df.apply(lambda row: row['A'] + row['B'], axis=1)
print(df)

Gestion des différents types de données

Lorsque vous travaillez avec plusieurs colonnes, anticipez les variations de types de données. Des fonctions robustes doivent inclure la gestion des erreurs (par exemple, les blocs try-except) pour gérer les éventuels problèmes de correspondance de types et éviter les échecs inattendus.

Choisir la bonne méthode

L’approche optimale dépend de la complexité de votre fonction et de la taille de l’ensemble de données :

  • Opérations vectorisées : Plus rapides pour les opérations numériques simples sur plusieurs colonnes.
  • applymap() : Efficace pour les opérations élément par élément sur des cellules individuelles sur plusieurs colonnes.
  • apply() (avec axis=1 ou axis=0) : Flexible pour les opérations ligne par ligne ou colonne par colonne nécessitant l’accès à plusieurs colonnes. Peut être plus lent pour les DataFrames massifs.
  • Fonctions lambda : Améliorent la lisibilité du code pour les fonctions simples au sein de apply() ou d’autres méthodes.

Privilégiez les opérations vectorisées chaque fois que possible pour des performances optimales. La compréhension de ces techniques permet une manipulation efficace des données dans Pandas.

Laisser un commentaire

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