Renommer des colonnes dans un dataframe pandas est une opération courante. Apprenez les quatre méthodes différentes pour renommer les colonnes pandas.

Pandas est une bibliothèque Python populaire pour l’analyse des données. Les données que nous devons analyser sont souvent disponibles sous différents formats, notamment des fichiers csv et tsv, des bases de données relationnelles, etc. Vous devez effectuer des vérifications préliminaires sur les données, gérer les valeurs manquantes et préparer les données pour une analyse plus approfondie.

Avec pandas, vous pouvez

  • Ingérer des données provenant de diverses sources
  • Explorer l’ensemble de données et gérer les valeurs manquantes
  • Analyser l’ensemble de données pour en tirer des enseignements

Pour tous les projets d’analyse de données, vous créerez souvent des cadres de données à partir de structures de données Python telles qu’un dictionnaire. Vous pouvez également lire des données provenant d’autres sources, telles qu’un fichier csv, dans un cadre de données.

Le dataframe est la structure de données de base de pandas. Il contient les enregistrements sur les lignes et les différents champs ou attributs sur les colonnes.

Cependant, il se peut que vous deviez renommer les noms des colonnes afin de les rendre plus descriptifs et d’en améliorer la lisibilité. Vous apprendrez ici quatre façons différentes de renommer les colonnes. C’est parti !

Création d’un DataFrame Pandas

Vous pouvez suivre ce didacticiel dans un environnement Jupyter notebook avec pandas installé. Vous pouvez également suivre le tutoriel sur Google Colab.

Tout d’abord, nous allons créer un cadre de données pandas et travailler avec lui pour le reste du tutoriel.

Voici un dictionnaire book_dict:

books_dict = {
    "one" : [
        "Les habitudes atomiques",
        "His Dark Materials",
        "La bibliothèque de minuit",
        "La terre brisée",
        "Les Anxieux",
    ],
    "deux" : [
        "James Clear",
        "Philip Pullman",
        "Matt Haig",
        "N.K.Jemisin",
        "Fredrik Backman",
    ],
    "trois" : ["Nonfiction", "Fantasy", "Magical Realism", "Fantasy", "Fiction"],
    "quatre" : ["4", "5", "3", "5"] : [4, 5, 3, 5, 4],
}

Nous allons d’abord importer pandas, puis créer un cadre de données df à partir de books_dict.

import pandas as pd

Remarque: nous reviendrons toujours à la cellule de code suivante pour créer une version initiale de l’image de données avant de renommer les colonnes.

df = pd.DataFrame(books_dict)

Nous pouvons utiliser df.head() pour obtenir les premières lignes du cadre de données df. Par défaut, cette fonction renvoie les cinq premières lignes. Ici, le df ne contient que cinq lignes ; l’utilisation de df.head() permet donc d’obtenir l’ensemble du dataframe.

df.head()
image-230

Nous voyons que les noms des colonnes sont actuellement les clés du dictionnaire. Mais ce n’est pas très descriptif. Renommons-les donc ! 👩‍🏫

Méthodes pour renommer les colonnes dans Pandas

Examinons maintenant les différentes méthodes permettant de renommer les colonnes dans Pandas :

  • Définir l’attribut columns du dataframe avec la liste des nouveaux noms de colonnes
  • Utilisation de la méthode rename() sur le dataframe
  • Utilisation de str.replace pour renommer une ou plusieurs colonnes
  • Utilisation de la méthode set_axis() sur l’image de données

Définition de l’attribut columns

Pour tout cadre de données, l’attribut columns contient la liste des noms de colonnes :

df.columns
# Index(['one', 'two', 'three', 'four'], dtype='object')

Renommons les colonnes pour indiquer ce que chaque champ représente, puis appelons df.head() pour voir les résultats :

df.columns = ['Title', 'Author', 'Genre', 'Rating']
df.head()
image-231

Utilisation de la méthode rename()

Pour renommer des colonnes dans pandas, vous pouvez utiliser la méthode rename() avec la syntaxe suivante :

df.rename(column={mapping})

Ce mapping peut être un dictionnaire de la forme suivante :

{'old_col_name_1':'new_col_name_1', 'old_col_name_2':'new_col_name_2',...,
'old_col_name_n':'new_col_name_n'}

Créons df à partir du dictionnaire books_dict:

df = pd.DataFrame(books_dict)

En utilisant la méthode rename() avec la syntaxe ci-dessus, nous obtenons df_1. Il s’agit d’une copie du dataframe dont les colonnes ont été renommées.

df_1 = df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'})
df_1.head()

Les noms des colonnes de df_1 sont donc modifiés :

image-232

Mais les noms des colonnes du dataframe original df ne changent pas :

df.head()
image-233

Comme cette méthode nous permet de fournir une correspondance entre l’ancien et le nouveau nom des colonnes, nous pouvons l’utiliser pour renommer des colonnes simples ou multiples.

Renommer des colonnes en place

Que faire si vous souhaitez modifier le cadre de données existant sans en créer une nouvelle copie ?

Pour ce faire, vous pouvez attribuer à inplace la valeur True dans l’appel de la méthode.

df.rename(columns={'one' : 'Title', 'two' : 'Author', 'three' : 'Genre', 'four' : 'Rating'},inplace=True)
df.head()

Ceci renommera les colonnes du dataframe original df :

rename-pandas-columns

Jusqu’à présent, nous avons vu comment :

  • Renommer des colonnes en fournissant un dictionnaire qui fait correspondre les anciens noms de colonnes aux nouveaux noms de colonnes
  • Renommer les colonnes en place sans créer un nouveau cadre de données

Vous pouvez également utiliser la méthode de renommage d’une autre manière.

Une autre approche pour renommer les colonnes

Renommons les colonnes pour qu’elles soient en majuscules :

df = pd.DataFrame(books_dict)
df.columns = ['TITLE','AUTHOR','GENRE','RATING']
df.head()

Le dataframe df ressemble maintenant à ceci :

image-234

Supposons que nous voulions changer chacun de ces noms de colonnes pour qu’ils soient en majuscules. Au lieu de fournir un dictionnaire pour chaque nom de colonne, nous pouvons spécifier une fonction ou un appel de méthode sur un objet, comme indiqué :

df.rename(str.title,axis='columns',inplace=True)
df.head()
rename-pandas-columns

Ici, nous définissons l’axe sur 'colonnes' et utilisons str.title pour convertir tous les noms de colonnes en majuscules.

Utilisation de str.replace() sur les chaînes de noms de colonnes

Comme toujours, exécutez la cellule de code suivante pour créer le cadre de données à partir du dictionnaire :

df = pd.DataFrame(books_dict)

En Python, vous auriez utilisé la méthode replace() avec la syntaxe str.replace(this, with_this) pour obtenir une copie d’une chaîne avec les modifications requises. Voici un exemple :

>>> str1 = 'Marathon'
>>> str1.replace('Mara','Py')
'Python'

Vous savez que l’attribut columns contient une liste de chaînes de caractères contenant les noms des colonnes. Vous pouvez donc appeler str.replace('ancien_nom_de_colonne', 'nouveau_nom_de_colonne') comme suit :

df.columns = df.columns.str.replace('one','Title')
df.head()
rename-pandas-columns

Ici, nous n’avons renommé que la colonne ‘one’ en ‘Title’, les autres noms de colonnes restant inchangés.

Renommons maintenant les autres colonnes en utilisant la même approche :

df.columns = df.columns.str.replace('two', 'Author')
df.columns = df.columns.str.replace('three', 'Genre')
df.columns = df.columns.str.replace('four', 'Rating')
df.head()
image-232

Cette méthode de renommage des colonnes est utile lorsque vous ne devez renommer qu’une seule colonne ou un petit sous-ensemble de colonnes.

Utilisation de la méthode set_axis()

Revenons à la version initiale d’un cadre de données :

df = pd.DataFrame(books_dict)

Vous pouvez également utiliser la méthode set_axis() pour renommer les colonnes. La syntaxe est la suivante :

df.set_axis([list_of_column_names],axis='columns')

Par défaut, la méthode set_axis() renvoie la copie du dataframe. Mais si vous souhaitez modifier l’image de données en place, vous pouvez fixer la valeur de la copie à False.

df = df.set_axis(['Titre', 'Auteur', 'Genre', 'Note'],axis='columns',copy=False)
df.head()
rename-pandas-columns

Conclusion

Voici une revue des différentes méthodes pour renommer les colonnes d’un dataframe pandas :

  • Pour un exemple de dataframe df, l’attribut columns df.columns est la liste des noms de colonnes. Pour renommer les colonnes, vous pouvez définir cet attribut avec la liste des nouveaux noms de colonnes.
  • La méthode rename() pour renommer les colonnes fonctionne avec la syntaxe suivante : df.rename(columns={mapping})mapping fait référence au mapping des anciens noms de colonnes vers les nouveaux noms de colonnes. Vous pouvez également utiliser la méthode rename() en spécifiant une fonction à appliquer à tous les noms de colonnes : df.rename(function or method call, axis='columns').
  • Tout comme vous utilisez la méthode replace() sur une chaîne Python, vous pouvez utiliser df.columns.str.replace('old_column_name', 'new_column_name') pour remplacer les noms de colonnes.
  • Une autre approche pour renommer les colonnes consiste à utiliser la méthode set_axis avec la syntaxe suivante : df.set_axis(list_of_col_names,axis='columns').

C’est tout pour ce tutoriel ! Consultez la liste des carnets de notes collaboratifs pour l’analyse de données.