Cours
Il est souvent plus facile de trouver des données intéressantes dans un DataFrame si vous modifiez l'ordre des lignes. Vous pouvez trier les lignes en passant un nom de colonne à .sort_values().
Dans les cas où des lignes ont la même valeur (ce qui est fréquent si vous triez sur une variable catégorielle), vous pouvez souhaiter briser les égalités en triant sur une autre colonne. Vous pouvez ainsi trier sur plusieurs colonnes en passant une liste de noms de colonnes.

Utiliser Pandas pour trier des colonnes
Vous pouvez modifier l'ordre des lignes en les triant de manière à ce que les données les plus intéressantes se trouvent en haut du DataFrame.
Trier les colonnes en fonction d'une seule variable
Par exemple, lorsque nous appliquons sort_values() à la colonne weight_kg du DataFrame chiens, nous obtenons le chien le plus léger en haut, Stella le Chihuahua, et le chien le plus lourd en bas, Bernie le Saint Bernard.
dogs.sort_values("weight_kg")
name breed color height_cm weight_kg date_of_birth
5 Stella Chihuahua Tan 18 2 2015-04-20
3 Cooper Schnauzer Gray 49 17 2011-12-11
0 Bella Labrador Brown 56 24 2013-07-01
1 Charlie Poodle Black 43 24 2016-09-16
2 Lucy Chow Chow Brown 46 24 2014-08-25
4 Max Labrador Black 59 29 2017-01-20
6 Bernie St. Bernard White 77 74 2018-02-27
Si vous donnez la valeur False à l'argument ascending, les données seront triées dans l'autre sens, du chien le plus lourd au chien le plus léger.
dogs.sort_values("weight_kg", ascending=False)
name breed color height_cm weight_kg date_of_birth
6 Bernie St. Bernard White 77 74 2018-02-27
4 Max Labrador Black 59 29 2017-01-20
0 Bella Labrador Brown 56 24 2013-07-01
1 Charlie Poodle Black 43 24 2016-09-16
2 Lucy Chow Chow Brown 46 24 2014-08-25
3 Cooper Schnauzer Gray 49 17 2011-12-11
5 Stella Chihuahua Tan 18 2 2015-04-20
Trier les colonnes en fonction de plusieurs variables
Nous pouvons trier sur plusieurs variables en passant une liste de noms de colonnes à sort_values. Ici, nous trions d'abord par poids, puis par taille. Maintenant, Charlie, Lucy et Bella sont classés du plus petit au plus grand, même s'ils pèsent tous le même poids.
dogs.sort_values(["weight_kg", "height_cm"])
name breed color height_cm weight_kg date_of_birth
5 Stella Chihuahua Tan 18 2 2015-04-20
3 Cooper Schnauzer Gray 49 17 2011-12-11
1 Charlie Poodle Black 43 24 2016-09-16
2 Lucy Chow Chow Brown 46 24 2014-08-25
0 Bella Labrador Brown 56 24 2013-07-01
4 Max Labrador Black 59 29 2017-01-20
6 Bernie St. Bernard White 77 74 2018-02-27
Pour modifier la direction dans laquelle les valeurs sont triées, passez une liste à l'argument ascendant pour spécifier la direction dans laquelle le tri doit être effectué pour chaque variable. Maintenant, Charlie, Lucy et Bella sont classés du plus grand au plus petit.
dogs.sort_values(["weight_kg", "height_cm"], ascending=[True, False])
name breed color height_cm weight_kg date_of_birth
5 Stella Chihuahua Tan 18 2 2015-04-20
3 Cooper Schnauzer Gray 49 17 2011-12-11
0 Bella Labrador Brown 56 24 2013-07-01
2 Lucy Chow Chow Brown 46 24 2014-08-25
1 Charlie Poodle Black 43 24 2016-09-16
4 Max Labrador Black 59 29 2017-01-20
6 Bernie St. Bernard White 77 74 2018-02-27
Utiliser les Pandas pour trier les lignes
Il peut arriver que vous souhaitiez réorganiser les lignes en fonction de leurs étiquettes (c'est-à-dire l'index du DataFrame) plutôt qu'en fonction de colonnes spécifiques. Dans ce cas, vous pouvez utiliser la méthode sort_index() au lieu de sort_values(). N'oubliez pas que, par défaut, sort_index() trie vos lignes dans l'ordre croissant de leur index :
# Sort rows by their index (ascending)
dogs_sorted = dogs.sort_index()
print(dogs_sorted)
Si vous souhaitez trier les lignes par ordre décroissant, passez simplement ascending=False:
# Sort rows by their index (descending)
dogs_sorted_desc = dogs.sort_index(ascending=False)
print(dogs_sorted_desc)
De même, si vous disposez d'un index multi-niveaux (hiérarchique), sort_index() peut également le gérer en triant plusieurs niveaux. Il suffit de passer une liste aux paramètres level ou ascending (tout comme nous avons dû passer une liste pour sort_values()) :
# Sort rows by multiple levels of a multi-level index
dogs_sorted_multi = dogs.sort_index(level=[0, 1], ascending=[True, False])
print(dogs_sorted_multi)
Pandas Sort Values Interactive Example
Dans l'exemple suivant, vous allez trier homelessness par nombre de sans-abri, du plus petit au plus grand, et l'enregistrer sous homelessness_ind. Enfin, vous imprimerez la tête du DataFrame trié.
# Sort homelessness by individuals
homelessness_ind = homelessness.sort_values("individuals")
# Print the top few rows
print(homelessness_ind.head())
Lorsque nous exécutons le code ci-dessus, nous obtenons le résultat suivant :
region state individuals family_members state_pop
50 Mountain Wyoming 434.0 205.0 577601
34 West North Central North Dakota 467.0 75.0 758080
7 South Atlantic Delaware 708.0 374.0 965479
39 New England Rhode Island 747.0 354.0 1058287
45 New England Vermont 780.0 511.0 624358
Pour en savoir plus sur le tri et le sous-ensemble des données, veuillez consulter cette vidéo tirée de notre cours Manipulation de données avec pandas.
Ce contenu est extrait du cours Data Manipulation with pandas de DataCamp par Maggie Matsui et Richie Cotton.
Poursuite de l'apprentissage
Nous avons appris dans cet article, entre autres, quand utiliser sort_index() ou sort_values(): Utilisez sort_values() lorsque vous souhaitez réorganiser les lignes en fonction des valeurs des colonnes; utilisez sort_index() lorsque vous souhaitez réorganiser les lignes en fonction des étiquettes des lignes (l'index du DataFrame).
Nous avons beaucoup d'autres tutoriels utiles sur les pandas pour que vous puissiez continuer à apprendre, y compris le Guide ultime des pandas pour les débutants, pour que vous puissiez continuer à vous entraîner. Nous avons également d'autres tutoriels spécifiques pour des problèmes courants, notamment Comment importer des données CSV dans Pandas et Comment joindre des DataFrames dans Pandas. N'oubliez pas non plus de suivre notre cursus de compétences en programmation Python pour continuer à améliorer vos compétences.