2023-06-26 11:16 Temps de lecture : 13 min

Comment renommer les colonnes Pandas [4 Examples]

Modifier les en-têtes de colonnes dans un dataframe pandas est une action fréquente. Découvrez quatre approches distinctes pour ajuster les noms de colonnes avec pandas.

Pandas est une librairie Python très répandue dans le domaine de l'analyse de données. Les données que nous devons examiner se présentent souvent sous des formes variées, comme des fichiers CSV ou TSV, des bases de données relationnelles, etc. Il est donc nécessaire d'effectuer des vérifications initiales, de gérer les données manquantes et de préparer ces données pour une analyse plus approfondie.

Avec pandas, vous pouvez :

  • Importer des données de sources multiples.
  • Parcourir les ensembles de données et gérer les éventuelles valeurs manquantes.
  • Étudier les données afin d'en extraire des informations utiles.

Dans le cadre de projets d'analyse de données, vous serez amené à construire des blocs de données à partir de structures Python, telles que des dictionnaires. Vous pourrez également extraire des données depuis d'autres sources, comme un fichier CSV, et les intégrer dans un dataframe.

Le dataframe est l'élément central dans pandas. Il organise les informations en lignes (enregistrements) et en colonnes (champs ou attributs).

Cependant, il peut s'avérer indispensable de renommer les colonnes pour les rendre plus explicites et améliorer la compréhension. Dans ce guide, nous allons explorer quatre manières différentes de renommer ces colonnes. C'est parti!

Création d'un DataFrame Pandas

Vous pouvez reproduire les exemples dans un environnement Jupyter avec pandas déjà installé. Vous pouvez également utiliser Google Colab.

Commençons par créer un dataframe pandas sur lequel nous allons travailler.

Voici un dictionnaire, nommé book_dict :

books_dict = {
    "one": [
        "Atomic Habits",
        "His Dark Materials",
        "The Midnight Library",
        "The Broken Earth",
        "Anxious People",
    ],
    "two": [
        "James Clear",
        "Philip Pullman",
        "Matt Haig",
        "N.K.Jemisin",
        "Fredrik Backman",
    ],
    "three": ["Nonfiction", "Fantasy", "Magical Realism", "Fantasy", "Fiction"],
    "four": [4, 5, 3, 5, 4],
}

Nous allons d'abord importer pandas, puis créer un dataframe df à partir de ce dictionnaire.

import pandas as pd

Note : Nous allons réutiliser cette cellule de code (pour créer une version initiale du dataframe) avant chaque opération de renommage.

df = pd.DataFrame(books_dict)

La commande df.head() permet d'afficher les premières lignes du dataframe. Par défaut, elle retourne les cinq premières lignes. Ici, le dataframe ne contient que cinq lignes, ce qui fait que df.head() affiche le dataframe dans sa totalité.

df.head()

Les noms de colonnes correspondent aux clés du dictionnaire. Cependant, ces noms ne sont pas très explicites. Il est donc temps de les renommer! 👩‍🏫

Méthodes pour modifier les noms de colonnes

Examinons maintenant les différentes techniques pour renommer les colonnes dans pandas :

  • Assigner une liste des nouveaux noms de colonnes à l'attribut columns du dataframe.
  • Utiliser la méthode rename() sur le dataframe.
  • Utiliser la fonction str.replace pour renommer une ou plusieurs colonnes.
  • Utiliser la méthode set_axis() sur le dataframe.

Assignation de l'attribut columns

L'attribut columns de tout dataframe contient la liste de ses noms de colonnes :

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

Nous pouvons renommer les colonnes afin qu'elles décrivent le contenu de chaque champ. Après avoir effectué ces modifications, on peut utiliser df.head() pour visualiser le résultat :

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

Utilisation de la méthode rename()

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

df.rename(column={mapping})

Ce mapping peut prendre la forme d'un dictionnaire, comme ceci :

{'ancien_nom_colonne_1':'nouveau_nom_colonne_1', 'ancien_nom_colonne_2':'nouveau_nom_colonne_2',...,
'ancien_nom_colonne_n':'nouveau_nom_colonne_n'}

Recréons le dataframe df à partir du dictionnaire books_dict :

df = pd.DataFrame(books_dict)

En utilisant la méthode rename() comme indiqué ci-dessus, nous obtenons un nouveau dataframe, df_1. Il s'agit d'une copie du dataframe original, mais avec les noms de colonnes modifiés.

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

Ainsi, les noms de colonnes du dataframe df_1 sont modifiés :

Cependant, les noms de colonne du dataframe original, df, restent inchangés :

df.head()

Cette approche permet de fournir une correspondance entre les anciens et les nouveaux noms de colonnes, ce qui est pratique pour renommer des colonnes à la fois uniques et multiples.

Modifier les noms de colonnes directement

Que faire si l'on souhaite modifier le dataframe existant, sans créer de nouvelle copie ?

Pour cela, il suffit de définir l'argument inplace à True dans l'appel de la méthode.

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

Ceci modifiera les noms de colonne du dataframe original, df :

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

  • Renommer les colonnes en fournissant un dictionnaire qui établit la correspondance entre les anciens et les nouveaux noms.
  • Modifier les noms des colonnes directement dans le dataframe, sans créer de copie.

Il existe une autre façon d'utiliser la méthode rename().

Une autre méthode pour renommer les colonnes

Mettons les noms de colonnes en majuscules :

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

Le dataframe df ressemble maintenant à ceci :

Supposons que nous souhaitons transformer tous ces noms de colonne en casse de titre. Au lieu de fournir un dictionnaire pour chaque nom, nous pouvons faire appel à une fonction ou une méthode sur un objet :

df.rename(str.title,axis="columns",inplace=True)
df.head()

Ici, nous spécifions l'argument axe à "columns", et nous utilisons str.title pour convertir tous les noms de colonne en casse de titre.

Utilisation de str.replace() sur les noms de colonnes

Comme d'habitude, exécutons la cellule de code suivante pour initialiser notre dataframe :

df = pd.DataFrame(books_dict)

En Python, la méthode replace() permet de remplacer une portion de chaîne par une autre : str.replace(chaine_a_remplacer, chaine_de_remplacement). Voici un exemple :

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

L'attribut columns contient une liste de chaînes, qui sont les noms des colonnes. Nous pouvons utiliser str.replace('ancien_nom_colonne', 'nouveau_nom_colonne') comme ceci :

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

Dans cet exemple, seule la colonne 'one' a été renommée 'Title', les autres noms restent inchangés.

Modifions maintenant les autres colonnes selon la même méthode :

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()

Cette méthode est pratique lorsqu'il est nécessaire de renommer une colonne unique, ou un petit groupe de colonnes.

Utilisation de la méthode set_axis()

Revenons à la version initiale du dataframe :

df = pd.DataFrame(books_dict)

Vous pouvez également utiliser la méthode set_axis() pour ajuster les noms de colonne. La syntaxe est la suivante :

df.set_axis([liste_des_noms_de_colonnes],axis="columns")

Par défaut, set_axis() renvoie une copie modifiée du dataframe. Pour modifier le dataframe original, il faut définir l'argument copy à False.

df = df.set_axis(['Title','Author','Genre','Rating'],axis="columns",copy=False)
df.head()

Conclusion

Voici un récapitulatif des différentes manières de renommer les colonnes dans un dataframe pandas :

  • Pour un dataframe df donné, df.columns est la liste des noms de colonnes. Vous pouvez modifier ces noms en assignant une nouvelle liste à cet attribut.
  • La méthode rename() permet de renommer les colonnes, selon la syntaxe : df.rename(columns={mapping}), où mapping correspond à un dictionnaire qui associe les anciens et nouveaux noms de colonnes. Vous pouvez également utiliser rename() en spécifiant une fonction à appliquer à tous les noms : df.rename(fonction ou méthode, axis='columns').
  • De même que vous utilisez replace() sur une chaîne Python, vous pouvez utiliser : df.columns.str.replace('ancien_nom_colonne', 'nouveau_nom_colonne') pour remplacer les noms.
  • Enfin, la méthode set_axis() permet de renommer les colonnes selon la syntaxe : df.set_axis(liste_des_noms_de_colonnes, axis='columns').

C'est tout pour ce tutoriel ! N'hésitez pas à consulter la liste des notebooks collaboratifs pour approfondir l'analyse de données.

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.