Tri de données avec Pandas

PandasBeginner
Pratiquer maintenant

Introduction

Bienvenue dans le laboratoire de tri de données avec Pandas ! Le tri est une opération fondamentale en analyse de données. Il vous aide à organiser vos données, les rendant plus faciles à lire, à comprendre et à analyser. Que vous ayez besoin de trouver les valeurs les plus élevées ou les plus basses, ou simplement d'organiser les données dans un ordre logique, Pandas fournit des outils puissants et flexibles pour accomplir cette tâche.

Dans ce laboratoire, vous apprendrez à utiliser les principales méthodes de tri dans Pandas :

  • sort_values() : Pour trier un DataFrame par les valeurs d'une ou plusieurs colonnes.
  • sort_index() : Pour trier un DataFrame par son index.
  • reset_index() : Pour réinitialiser l'index après une opération de tri.

À la fin de ce laboratoire, vous maîtriserez l'organisation de vos données pour répondre à vos besoins analytiques. Commençons !

Trier un DataFrame par une seule colonne en utilisant sort_values

Dans cette étape, vous apprendrez l'opération de tri la plus courante : trier un DataFrame par les valeurs d'une seule colonne. Nous utiliserons la méthode sort_values() pour cela. Le paramètre by est utilisé pour spécifier la colonne par laquelle vous souhaitez trier.

Tout d'abord, ouvrez le fichier main.py situé dans le répertoire ~/project à l'aide de l'explorateur de fichiers sur la gauche. Ce fichier a été pré-rempli avec un DataFrame d'exemple.

Ajoutez maintenant le code suivant à la fin de main.py pour trier le DataFrame par la colonne Age.

## --- Étape 1 : Trier par une seule colonne ---
df_sorted_by_age = df.sort_values(by='Age')
print("\nDataFrame trié par Age:")
print(df_sorted_by_age)

Votre fichier main.py complet devrait maintenant ressembler à ceci :

import pandas as pd

## Créer un DataFrame d'exemple pour nos exercices
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 22, 25, 28, 22],
    'Score': [85, 91, 88, 79, 91]
}
df = pd.DataFrame(data)

print("DataFrame original:")
print(df)

## --- Étape 1 : Trier par une seule colonne ---
df_sorted_by_age = df.sort_values(by='Age')
print("\nDataFrame trié par Age:")
print(df_sorted_by_age)

Pour voir le résultat, exécutez le script depuis le terminal.

python3 main.py

Vous verrez le DataFrame original suivi du nouveau DataFrame trié par âge dans l'ordre croissant.

Sortie attendue :

DataFrame original:
      Name  Age  Score
0    Alice   25     85
1      Bob   22     91
2  Charlie   25     88
3    David   28     79
4      Eve   22     91

DataFrame trié par Age:
      Name  Age  Score
1      Bob   22     91
4      Eve   22     91
0    Alice   25     85
2  Charlie   25     88
3    David   28     79

Trier par plusieurs colonnes dans l'ordre croissant

Dans cette étape, vous apprendrez à trier un DataFrame en fonction de plusieurs colonnes. Ceci est utile lorsque vous avez des égalités dans la première colonne de tri et que vous souhaitez appliquer un critère de tri secondaire.

Pour trier par plusieurs colonnes, vous passez une liste de noms de colonnes au paramètre by de la méthode sort_values(). Pandas triera par la première colonne de la liste, puis utilisera la deuxième colonne pour résoudre les égalités, et ainsi de suite.

Tétrons d'abord notre DataFrame par Age, puis par Score. Ajoutez le code suivant à la fin de votre fichier main.py.

## --- Étape 2 : Trier par plusieurs colonnes ---
df_sorted_multiple = df.sort_values(by=['Age', 'Score'])
print("\nDataFrame trié par Age puis par Score:")
print(df_sorted_multiple)

Exécutez à nouveau le script pour voir les changements.

python3 main.py

Vous verrez une nouvelle section dans la sortie. Remarquez comment les deux lignes avec Age 22 sont maintenant triées par Score (Bob avec 91 vient après Eve avec 91, car leur ordre est stable). Il en va de même pour les lignes avec Age 25.

Sortie attendue (montrant uniquement la nouvelle partie) :

...

DataFrame trié par Age puis par Score:
      Name  Age  Score
1      Bob   22     91
4      Eve   22     91
0    Alice   25     85
2  Charlie   25     88
3    David   28     79

Trier par ordre décroissant avec ascending=False

Dans cette étape, vous apprendrez à contrôler la direction du tri. Par défaut, sort_values() trie dans l'ordre croissant. Vous pouvez modifier cela en utilisant le paramètre ascending.

  • Pour trier dans l'ordre décroissant, définissez ascending=False.
  • Lors du tri par plusieurs colonnes, vous pouvez spécifier un ordre différent pour chaque colonne en passant une liste de booléens, par exemple, ascending=[True, False].

Tétrons le DataFrame par Age dans l'ordre croissant et par Score dans l'ordre décroissant. Cela nous aidera à trouver le meilleur score dans chaque groupe d'âge. Ajoutez le code suivant à la fin de main.py.

## --- Étape 3 : Trier en ordre décroissant et mixte ---
df_sorted_mixed = df.sort_values(by=['Age', 'Score'], ascending=[True, False])
print("\nDataFrame trié par Age (asc) et Score (desc):")
print(df_sorted_mixed)

Exécutez le script pour observer le résultat.

python3 main.py

Dans la sortie, regardez les lignes pour l'âge 22. Eve et Bob ont tous deux un score de 91, donc leur ordre pourrait ne pas changer. Pour l'âge 25, Charlie (Score 88) apparaît maintenant avant Alice (Score 85) car nous avons trié les scores dans l'ordre décroissant.

Sortie attendue (montrant uniquement la nouvelle partie) :

...

DataFrame trié par Age (asc) et Score (desc):
      Name  Age  Score
1      Bob   22     91
4      Eve   22     91
2  Charlie   25     88
0    Alice   25     85
3    David   28     79

Trier l'index avec sort_index

Dans cette étape, vous apprendrez à trier un DataFrame par son index. Après avoir effectué une opération sort_values(), l'index du DataFrame est mélangé. Vous pouvez le constater dans les sorties précédentes (par exemple, l'index est 1, 4, 2, 0, 3).

La méthode sort_index() vous permet de trier le DataFrame en fonction des étiquettes de son index, restaurant ainsi l'ordre d'origine si l'index était une simple plage.

Prenons le résultat de l'étape précédente (df_sorted_mixed) et trions-le par son index. Ajoutez le code suivant à la fin de main.py.

## --- Étape 4 : Trier par index ---
## Le résultat précédent (df_sorted_mixed) a un index mélangé. Trions-le par index.
df_reordered_by_index = df_sorted_mixed.sort_index()
print("\nDataFrame trié à nouveau par index:")
print(df_reordered_by_index)

Exécutez le script.

python3 main.py

Vous verrez que le DataFrame est maintenant trié par son index (0, 1, 2, 3, 4), ce qui le restaure effectivement à son ordre de ligne d'origine.

Sortie attendue (montrant uniquement la nouvelle partie) :

...

DataFrame trié à nouveau par index:
      Name  Age  Score
0    Alice   25     85
1      Bob   22     91
2  Charlie   25     88
3    David   28     79
4      Eve   22     91

Réinitialiser l'index après le tri avec reset_index

Dans cette dernière étape, vous apprendrez à réinitialiser l'index d'un DataFrame. Après le tri, l'index n'est plus une plage propre et séquentielle à partir de 0. Bien que sort_index() puisse restaurer l'ordre d'origine, vous souhaitez parfois conserver le nouvel ordre trié tout en ayant un index frais et séquentiel.

La méthode reset_index() est parfaite pour cela. Elle remplace l'index actuel par un index entier par défaut (0, 1, 2, ...). Il est courant d'utiliser le paramètre drop=True pour supprimer complètement l'ancien index. Si vous n'utilisez pas drop=True, l'ancien index sera ajouté comme une nouvelle colonne nommée index.

Prenons l'un de nos DataFrames triés (df_sorted_mixed) et réinitialisons son index. Ajoutez le dernier morceau de code à main.py.

## --- Étape 5 : Réinitialiser l'index après le tri ---
## Prenons un DataFrame trié et donnons-lui un nouvel index propre
df_with_reset_index = df_sorted_mixed.reset_index(drop=True)
print("\nDataFrame trié avec index réinitialisé:")
print(df_with_reset_index)

Exécutez le script une dernière fois.

python3 main.py

Observez la sortie finale. Le DataFrame est toujours trié par Age (asc) et Score (desc), mais l'index est maintenant une séquence propre de 0 à 4.

Sortie attendue (montrant uniquement la nouvelle partie) :

...

DataFrame trié avec index réinitialisé:
      Name  Age  Score
0      Bob   22     91
1      Eve   22     91
2  Charlie   25     88
3    Alice   25     85
4    David   28     79

Résumé

Félicitations pour avoir terminé le laboratoire de tri de données Pandas ! Vous avez acquis les compétences essentielles pour organiser et ordonner vos données au sein d'un DataFrame Pandas.

Dans ce laboratoire, vous avez pratiqué :

  • Le tri par une seule colonne en utilisant sort_values(by='nom_colonne').
  • Le tri par plusieurs colonnes en passant une liste au paramètre by.
  • Le contrôle de la direction du tri avec le paramètre ascending.
  • La restauration de l'ordre d'origine en triant l'index avec sort_index().
  • La création d'un nouvel index propre sur un DataFrame trié en utilisant reset_index(drop=True).

Ces techniques de tri sont fondamentales pour le nettoyage, l'exploration et la préparation des données pour des analyses et visualisations plus avancées. Continuez à pratiquer ces compétences pour devenir plus efficace dans votre parcours en science des données.