Kurs
Es ist oft einfacher, interessante Daten in einem DataFrame zu finden, wenn du die Reihenfolge der Zeilen änderst. Du kannst die Zeilen sortieren, indem du einen Spaltennamen an .sort_values() übergibst.
In Fällen, in denen Zeilen denselben Wert haben (das ist häufig der Fall, wenn du nach einer kategorialen Variable sortierst), kannst du die Gleichheit durch Sortieren nach einer anderen Spalte aufheben. Du kannst auf diese Weise nach mehreren Spalten sortieren, indem du eine Liste von Spaltennamen übergibst.

Pandas zum Sortieren von Spalten verwenden
Du kannst die Reihenfolge der Zeilen ändern, indem du sie so sortierst, dass die interessantesten Daten ganz oben im DataFrame stehen.
Spalten nach einer einzelnen Variable sortieren
Wenn wir zum Beispiel sort_values() auf die Spalte weight_kg des DataFrame Hunde anwenden, erhalten wir oben den leichtesten Hund, Stella den Chihuahua, und unten den schwersten Hund, Bernie den Bernhardiner.
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
Wenn du das Argument ascending auf False setzt, werden die Daten in umgekehrter Reihenfolge sortiert, also vom schwersten zum leichtesten Hund.
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
Spalten nach mehreren Variablen sortieren
Wir können nach mehreren Variablen sortieren, indem wir eine Liste von Spaltennamen an sort_values übergeben. Hier sortieren wir zuerst nach Gewicht und dann nach Größe. Jetzt werden Charlie, Lucy und Bella vom Kleinsten zum Größten geordnet, obwohl sie alle gleich viel wiegen.
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
Um die Richtung zu ändern, in der die Werte sortiert werden, übergibst du eine Liste an das aufsteigende Argument, um anzugeben, in welche Richtung die Sortierung für jede Variable erfolgen soll. Jetzt werden Charlie, Lucy und Bella vom Größten zum Kleinsten geordnet.
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
Pandas zum Sortieren nach Zeilen verwenden
Manchmal möchtest du Zeilen nicht nach bestimmten Spalten, sondern nach ihren Zeilenbezeichnungen (d. h. dem Index des DataFrame) neu anordnen. Wenn das der Fall ist, kannst du die Methode sort_index() anstelle von sort_values() verwenden. Denke daran, dass sort_index() deine Zeilen standardmäßig in aufsteigender Reihenfolge nach ihrem Index sortiert:
# Sort rows by their index (ascending)
dogs_sorted = dogs.sort_index()
print(dogs_sorted)
Wenn du die Zeilen in absteigender Reihenfolge sortieren willst, gibst du einfach ascending=False an:
# Sort rows by their index (descending)
dogs_sorted_desc = dogs.sort_index(ascending=False)
print(dogs_sorted_desc)
Wenn du einen mehrstufigen (hierarchischen) Index hast, kann sort_index() auch damit umgehen, indem es mehrere Stufen sortiert. Du übergibst einfach eine Liste an die Parameter level oder ascending (so wie wir früher eine Liste für sort_values() übergeben mussten):
# 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 Sortierwerte Interaktives Beispiel
Im folgenden Beispiel sortierst du homelessness nach der Anzahl der obdachlosen Personen, von der kleinsten zur größten, und speicherst dies als homelessness_ind. Schließlich druckst du den Kopf des sortierten DataFrames aus.
# Sort homelessness by individuals
homelessness_ind = homelessness.sort_values("individuals")
# Print the top few rows
print(homelessness_ind.head())
Wenn wir den obigen Code ausführen, erhalten wir das folgende Ergebnis:
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
Wenn du mehr über das Sortieren und Unterteilen der Daten erfahren möchtest, schau dir dieses Video aus unserem Kurs Datenbearbeitung mit Pandas an.
Dieser Inhalt stammt aus dem DataCamp-Kurs " Datenbearbeitung mit Pandas " von Maggie Matsui und Richie Cotton.
Weiteres Lernen
In diesem Artikel haben wir u.a. gelernt, wann sort_index() vs. sort_values() zu verwenden ist: Verwende sort_values(), wenn du die Zeilen anhand der Spaltenwerte neu anordnen möchtest; verwende sort_index(), wenn du die Zeilen anhand der Zeilenbeschriftungen (dem Index des DataFrame) neu anordnen möchtest.
Wir haben viele weitere nützliche Pandas-Tutorials, damit du weiter lernen kannst, darunter The ultimate Guide to Pandas for Beginners, damit du weiter üben kannst. Wir haben auch andere spezifische Anleitungen für häufige Probleme, z. B. wie man CSV-Daten in Pandas importiert und wie man DataFrames in Pandas verbindet. Vergiss auch nicht, unseren Lernpfad zur Python-Programmierung zu besuchen, um deine Fähigkeiten zu verbessern.
