Utilisez sort_values() pour réorganiser les lignes en fonction des valeurs des colonnes. Appliquez la fonction sort_index() pour réorganiser les lignes en fonction de l'index du DataFrame. Combinez les deux méthodes pour explorer vos données sous différents angles.
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.
name breed color height_cm weight_kg date_of_birth
5 Stella Chihuahua Tan 1822015-04-203 Cooper Schnauzer Gray 49172011-12-110 Bella Labrador Brown 56242013-07-011 Charlie Poodle Black 43242016-09-162 Lucy Chow Chow Brown 46242014-08-254 Max Labrador Black 59292017-01-206 Bernie St. Bernard White 77742018-02-27Propulsé par
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)Propulsé par
name breed color height_cm weight_kg date_of_birth
6 Bernie St. Bernard White 77742018-02-274 Max Labrador Black 59292017-01-200 Bella Labrador Brown 56242013-07-011 Charlie Poodle Black 43242016-09-162 Lucy Chow Chow Brown 46242014-08-253 Cooper Schnauzer Gray 49172011-12-115 Stella Chihuahua Tan 1822015-04-20Propulsé par
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"])Propulsé par
name breed color height_cm weight_kg date_of_birth
5 Stella Chihuahua Tan 1822015-04-203 Cooper Schnauzer Gray 49172011-12-111 Charlie Poodle Black 43242016-09-162 Lucy Chow Chow Brown 46242014-08-250 Bella Labrador Brown 56242013-07-014 Max Labrador Black 59292017-01-206 Bernie St. Bernard White 77742018-02-27Propulsé par
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])Propulsé par
name breed color height_cm weight_kg date_of_birth
5 Stella Chihuahua Tan 1822015-04-203 Cooper Schnauzer Gray 49172011-12-110 Bella Labrador Brown 56242013-07-012 Lucy Chow Chow Brown 46242014-08-251 Charlie Poodle Black 43242016-09-164 Max Labrador Black 59292017-01-206 Bernie St. Bernard White 77742018-02-27Propulsé par
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)Propulsé par
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)Propulsé par
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)Propulsé par
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 rowsprint(homelessness_ind.head())Propulsé par
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.0205.057760134 West North Central North Dakota 467.075.07580807 South Atlantic Delaware 708.0374.096547939 New England Rhode Island 747.0354.0105828745 New England Vermont 780.0511.0624358Propulsé par
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.
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).
Découvrez des méthodes efficaces pour trier un dictionnaire par valeurs en Python. Découvrez le tri par ordre croissant et décroissant, ainsi que des conseils supplémentaires pour le tri par clé.
Découvrez les fonctions et méthodes des listes Python. Veuillez suivre les exemples de code pour list() et d'autres fonctions et méthodes Python dès maintenant.
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 colonneweight_kgdu 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.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.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.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.
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 desort_values(). N'oubliez pas que, par défaut,sort_index()trie vos lignes dans l'ordre croissant de leur index :Si vous souhaitez trier les lignes par ordre décroissant, passez simplement
ascending=False: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ètreslevelouascending(tout comme nous avons dû passer une liste poursort_values()) :Pandas Sort Values Interactive Example
Dans l'exemple suivant, vous allez trier
homelessnesspar nombre de sans-abri, du plus petit au plus grand, et l'enregistrer soushomelessness_ind. Enfin, vous imprimerez la tête du DataFrame trié.Lorsque nous exécutons le code ci-dessus, nous obtenons le résultat suivant :
Essayez-le vous-même.
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()ousort_values(): Utilisezsort_values()lorsque vous souhaitez réorganiser les lignes en fonction des valeurs des colonnes; utilisezsort_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.