ConsigneTrie un DataFrame et crée des classements
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') # croissantdf.sort_values('score', ascending=False) # décroissantdf.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 croissantdf.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 granddf['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 →