Les DataFrames Pandas offrent des outils puissants pour la manipulation de données, et le tri est une opération fondamentale. Cet article explore comment trier efficacement un DataFrame par une seule colonne, en se concentrant sur la méthode cruciale sort_values()
et ses arguments clés : ascending
et na_position
.
Table des matières
- Contrôler l’ordre de tri avec
ascending
- Gérer les valeurs manquantes avec
na_position
- Trier par plusieurs colonnes
- Tri sur place
Contrôler l’ordre de tri avec ascending
La méthode sort_values()
offre un contrôle simple sur le sens du tri. L’argument ascending
, qui vaut par défaut True
(ordre croissant), détermine s’il faut trier par ordre croissant ou décroissant.
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 22, 28],
'Score': [85, 92, 78, 88]}
df = pd.DataFrame(data)
# Tri croissant par 'Age'
df_ascending = df.sort_values(by='Age')
print("Croissant :n", df_ascending)
# Tri décroissant par 'Age'
df_descending = df.sort_values(by='Age', ascending=False)
print("nDécroissant :n", df_descending)
Gérer les valeurs manquantes avec na_position
Lorsqu’on traite des jeux de données contenant des valeurs manquantes (NaN), l’argument na_position
contrôle le placement de ces valeurs dans la colonne triée. Il accepte deux valeurs :
'first'
(par défaut) : Place les valeurs NaN au début de la colonne triée.'last'
: Place les valeurs NaN à la fin de la colonne triée.
import pandas as pd
import numpy as np
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [25, 30, np.nan, 28, 22],
'Score': [85, 92, 78, 88, 95]}
df = pd.DataFrame(data)
# Valeurs NaN en premier
df_na_first = df.sort_values(by='Age', na_position='first')
print("NaN en premier :n", df_na_first)
# Valeurs NaN en dernier
df_na_last = df.sort_values(by='Age', na_position='last')
print("nNaN en dernier :n", df_na_last)
Trier par plusieurs colonnes
Vous pouvez facilement étendre cela pour trier par plusieurs colonnes en passant une liste à l’argument by
. Pandas triera par la première colonne de la liste, puis par la seconde, et ainsi de suite.
# Tri par Âge (croissant) puis par Score (décroissant)
df_multi = df.sort_values(by=['Age', 'Score'], ascending=[True, False])
print("nTri multi-colonnes :n", df_multi)
Tri sur place
Par défaut, sort_values()
renvoie un nouveau DataFrame trié. Pour modifier le DataFrame directement, définissez l’argument inplace
sur True
. Notez que cela modifie le DataFrame original, soyez donc prudent.
df.sort_values(by='Age', inplace=True)
print("nTri sur place :n", df)
En comprenant et en utilisant ces arguments, vous pouvez trier efficacement et précisément vos DataFrames Pandas, rationalisant ainsi votre flux de travail d’analyse de données.