Data Science

Maîtriser Pandas : Sélection efficace de multiples colonnes dans les DataFrames

Spread the love

Pandas est une puissante bibliothèque Python pour la manipulation et l’analyse de données. Une tâche courante consiste à sélectionner des colonnes spécifiques à partir d’un DataFrame. Cet article explore des méthodes efficaces et claires pour sélectionner plusieurs colonnes, en soulignant les meilleures pratiques.

Table des matières :

Utilisation de la syntaxe Getitem

L’approche la plus simple utilise la syntaxe getitem ([]). Fournissez une liste de noms de colonnes pour sélectionner ces colonnes.


import pandas as pd

data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)

# Sélectionner 'col1', 'col3', et 'col4'
selected_columns = ['col1', 'col3', 'col4']
selected_df = df[selected_columns]
print(selected_df)

Ceci est concis et lisible, mais assurez-vous que toutes les colonnes listées existent dans le DataFrame ; sinon, une KeyError se produit.

Utilisation de iloc()

iloc() utilise l’indexation basée sur les entiers. Sélectionnez les colonnes en fournissant une liste de leurs positions entières (en n’oubliant pas que Python utilise l’indexation à partir de zéro).


import pandas as pd

data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)

# Sélectionner les colonnes aux indices 0, 2 et 3
selected_df = df.iloc[:, [0, 2, 3]]  # : sélectionne toutes les lignes, [0, 2, 3] sélectionne les colonnes 0, 2 et 3
print(selected_df)

Le : sélectionne toutes les lignes. iloc() est utile lorsque les noms de colonnes sont inconnus, mais que les indices sont disponibles.

Utilisation de loc()

loc() utilise des étiquettes (noms de colonnes). Bien que similaire à getitem pour plusieurs colonnes, loc offre une plus grande flexibilité pour les sélections combinées de lignes et de colonnes.


import pandas as pd

data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)

# Sélectionner 'col1', 'col3', et 'col4'
selected_df = df.loc[:, ['col1', 'col3', 'col4']]  # : sélectionne toutes les lignes, ['col1', 'col3', 'col4'] sélectionne les colonnes spécifiées
print(selected_df)

loc indique explicitement la sélection basée sur les étiquettes, ce qui est bénéfique lorsqu’on le combine avec la sélection de lignes utilisant des étiquettes ou une indexation booléenne.

Indexation booléenne pour la sélection de colonnes

Pour des scénarios plus complexes, l’indexation booléenne avec loc permet de sélectionner des colonnes en fonction de conditions appliquées à leurs noms.


import pandas as pd

data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12], 'other_col': [13,14,15]}
df = pd.DataFrame(data)

# Sélectionner les colonnes commençant par 'col'
selected_df = df.loc[:, [col.startswith('col') for col in df.columns]]
print(selected_df)

Considérations sur les performances

En général, getitem est le plus rapide, suivi de loc, puis de iloc. Cependant, les différences sont généralement négligeables, sauf lorsqu’on traite de DataFrames massifs. Privilégiez la lisibilité et la maintenabilité aux gains de performance mineurs.

Conclusion

La sélection de plusieurs colonnes est fondamentale dans Pandas. Getitem est le plus simple pour les noms de colonnes connus. iloc() convient à l’indexation basée sur les entiers, tandis que loc() offre de la flexibilité et est préférable pour la sélection basée sur les étiquettes. La meilleure méthode dépend de vos besoins spécifiques et de la structure de vos données.

FAQ

  • Q : Que se passe-t-il si je sélectionne une colonne inexistante ?
    R : Getitem et loc soulèvent une KeyError. iloc soulève une IndexError si l’index est hors limites.
  • Q : Puis-je sélectionner des colonnes en fonction d’une condition ?
    R : Oui, utilisez l’indexation booléenne avec loc (comme indiqué ci-dessus).

Laisser un commentaire

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