Gebruik sort_values() om rijen te herschikken op kolomwaarden. Pas sort_index() toe om rijen te herschikken op de index van het DataFrame. Combineer beide methoden om je data vanuit verschillende invalshoeken te verkennen.
Interessante stukjes data in een DataFrame vinden gaat vaak makkelijker als je de volgorde van de rijen wijzigt. Je kunt de rijen sorteren door een kolomnaam door te geven aan .sort_values().
Als rijen dezelfde waarde hebben (dit komt vaak voor als je op een categorische variabele sorteert), wil je misschien gelijke waarden doorbreken door op een andere kolom te sorteren. Je kunt op meerdere kolommen sorteren door een lijst met kolomnamen door te geven.
Rijen sorteren op kolomwaarden met sort_values()
Je kunt de volgorde van de rijen veranderen door ze zo te sorteren dat de meest interessante data bovenaan het DataFrame staat.
Sorteren op één kolom
Als we bijvoorbeeld sort_values() toepassen op de kolom weight_kg van het dogs-DataFrame, krijgen we de lichtste hond bovenaan, Stella de Chihuahua, en de zwaarste hond onderaan, Bernie de Sint-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-27Mogelijk gemaakt door
Door het argument ascending op False te zetten, sorteer je de data andersom, van zwaarste naar lichtste hond.
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-20Mogelijk gemaakt door
Sorteren op meerdere kolommen
We kunnen op meerdere variabelen sorteren door een lijst met kolomnamen door te geven aan sort_values. Hier sorteren we eerst op gewicht en daarna op hoogte. Nu staan Charlie, Lucy en Bella van klein naar groot, ook al wegen ze allemaal hetzelfde.
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-27Mogelijk gemaakt door
Om de sorteerrichting per variabele te wijzigen, geef je een lijst door aan het argument ascending om aan te geven in welke richting voor elke variabele gesorteerd moet worden. Nu staan Charlie, Lucy en Bella van groot naar klein.
dogs.sort_values(["weight_kg","height_cm"], ascending=[True,False])Mogelijk gemaakt door
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-27Mogelijk gemaakt door
Sorteren op de rij-index met sort_index()
Soms wil je rijen herordenen op basis van hun rijlabeleds (dus de index van het DataFrame) in plaats van op specifieke kolommen. In dat geval kun je de methode sort_index() gebruiken in plaats van sort_values(). Onthoud dat sort_index() standaard je rijen oplopend sorteert op hun index:
# Sort rows by their index (ascending)
dogs_sorted = dogs.sort_index()print(dogs_sorted)Mogelijk gemaakt door
Als je de rijen in aflopende volgorde moet sorteren, geef dan gewoon ascending=False door:
# Sort rows by their index (descending)
dogs_sorted_desc = dogs.sort_index(ascending=False)print(dogs_sorted_desc)Mogelijk gemaakt door
Op dezelfde manier kan sort_index() ook overweg met een meerlagige (hiërarchische) index door meerdere niveaus te sorteren. Je geeft dan een lijst door aan de parameters level of ascending (net zoals we eerder een lijst doorgaven bij 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)Mogelijk gemaakt door
Interactief voorbeeld: pandas sort values
In het volgende voorbeeld sorteer je homelessness op het aantal individuen zonder dak, van klein naar groot, en sla je dit op als homelessness_ind. Tot slot print je de head van het gesorteerde DataFrame.
# Sort homelessness by individuals
homelessness_ind = homelessness.sort_values("individuals")# Print the top few rowsprint(homelessness_ind.head())Mogelijk gemaakt door
Als we de bovenstaande code uitvoeren, levert dat het volgende resultaat op:
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.0624358Mogelijk gemaakt door
In dit artikel hebben we onder andere geleerd wanneer je sort_index() versus sort_values() gebruikt: gebruik sort_values() als je rijen wilt herordenen op basis van kolomwaarden; gebruik sort_index() als je rijen wilt herordenen op basis van de rijlabeleds (de index van het DataFrame).
Interessante stukjes data in een DataFrame vinden gaat vaak makkelijker als je de volgorde van de rijen wijzigt. Je kunt de rijen sorteren door een kolomnaam door te geven aan
.sort_values().Als rijen dezelfde waarde hebben (dit komt vaak voor als je op een categorische variabele sorteert), wil je misschien gelijke waarden doorbreken door op een andere kolom te sorteren. Je kunt op meerdere kolommen sorteren door een lijst met kolomnamen door te geven.
Rijen sorteren op kolomwaarden met sort_values()
Je kunt de volgorde van de rijen veranderen door ze zo te sorteren dat de meest interessante data bovenaan het DataFrame staat.
Sorteren op één kolom
Als we bijvoorbeeld
sort_values()toepassen op de kolomweight_kgvan het dogs-DataFrame, krijgen we de lichtste hond bovenaan, Stella de Chihuahua, en de zwaarste hond onderaan, Bernie de Sint-Bernard.Door het argument
ascendingop False te zetten, sorteer je de data andersom, van zwaarste naar lichtste hond.Sorteren op meerdere kolommen
We kunnen op meerdere variabelen sorteren door een lijst met kolomnamen door te geven aan
sort_values. Hier sorteren we eerst op gewicht en daarna op hoogte. Nu staan Charlie, Lucy en Bella van klein naar groot, ook al wegen ze allemaal hetzelfde.Om de sorteerrichting per variabele te wijzigen, geef je een lijst door aan het argument ascending om aan te geven in welke richting voor elke variabele gesorteerd moet worden. Nu staan Charlie, Lucy en Bella van groot naar klein.
Sorteren op de rij-index met sort_index()
Soms wil je rijen herordenen op basis van hun rijlabeleds (dus de index van het DataFrame) in plaats van op specifieke kolommen. In dat geval kun je de methode
sort_index()gebruiken in plaats vansort_values(). Onthoud datsort_index()standaard je rijen oplopend sorteert op hun index:Als je de rijen in aflopende volgorde moet sorteren, geef dan gewoon
ascending=Falsedoor:Op dezelfde manier kan
sort_index()ook overweg met een meerlagige (hiërarchische) index door meerdere niveaus te sorteren. Je geeft dan een lijst door aan de parameterslevelofascending(net zoals we eerder een lijst doorgaven bijsort_values()):Interactief voorbeeld: pandas sort values
In het volgende voorbeeld sorteer je
homelessnessop het aantal individuen zonder dak, van klein naar groot, en sla je dit op alshomelessness_ind. Tot slot print je de head van het gesorteerde DataFrame.Als we de bovenstaande code uitvoeren, levert dat het volgende resultaat op:
Probeer het zelf.
Wil je meer leren over sorteren en subsetten van de data, bekijk dan deze video uit onze cursus Data Manipulation with pandas.
Deze content is afkomstig uit DataCamp’s cursus Data Manipulation with pandas van Maggie Matsui en Richie Cotton.
Verder leren
In dit artikel hebben we onder andere geleerd wanneer je
sort_index()versussort_values()gebruikt: gebruiksort_values()als je rijen wilt herordenen op basis van kolomwaarden; gebruiksort_index()als je rijen wilt herordenen op basis van de rijlabeleds (de index van het DataFrame).We hebben nog veel meer nuttige pandas-tutorials zodat je kunt blijven leren, waaronder The ultimate Guide to Pandas for Beginners, zodat je kunt blijven oefenen. We hebben ook andere specifieke how-to’s voor veelvoorkomende kwesties, waaronder How to Import CSV Data into Pandas en How to Join DataFrames in Pandas. Vergeet ook niet om onze skill track Python Programming te volgen om je skills verder te verbeteren.