Trier un DataFrame et créer des classements (ranks) sont deux opérations très courantes en analyse de données.
df.sort_values('score') # croissant
df.sort_values('score', ascending=False) # décroissant
df.sort_values(['dept', 'salaire']) # multi-clés (priorité gauche → droite)
df.sort_values(['dept', 'salaire'], ascending=[True, False])
df.sort_values('col', na_position='first') # mettre les NaN en hautLe DataFrame original n'est pas modifié par défaut. Pour réassigner :
df = df.sort_values('score') ou df.sort_values('score', inplace=True)Après sort_values, l'index reste celui d'origine (peut être en désordre). reset_index(drop=True) pour le réinitialiser.
df.sort_index() par index croissant
df.sort_index(axis=1) tri les COLONNES par nomAttribue un rang à chaque valeur (1 = plus petit par défaut) :
df['rang'] = df['score'].rank()
df['rang'] = df['score'].rank(ascending=False) # 1 = plus grand
df['rang'] = df['score'].rank(method='dense') # pas de saut en cas d'ex-aequoMéthodes pour gérer les ex-aequo :
'average' (défaut) moyenne des positions
'min' rang du premier (1, 1, 3)
'dense' sans trou (1, 1, 2)Plus rapide que sort + head :
df.nlargest(3, 'score')
df.nsmallest(5, 'salaire')df = pd.DataFrame({
'joueur': ['Alice', 'Bob', 'Charlie', 'Diana'],
'score': [150, 200, 180, 220]
})df.sort_values('score', ascending=False)
df['rang'] = df['score'].rank(ascending=False).astype(int)
print(df.sort_values('rang'))Pour un classement "compétition" (1, 2, 2, 4), utilise method='min'. Pour un classement "dense" (1, 2, 2, 3), method='dense'.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →