Ga naar hoofdinhoud

Pandas sort values: een complete how-to

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.
· 4 min lezen

Verken met AI

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.

Voorbeeld van kolommen sorteren in pandas

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.

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

Door het argument ascending op False te zetten, sorteer je de data andersom, van zwaarste naar lichtste hond.

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

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.

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

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])
      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

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)

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)

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)

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 rows
print(homelessness_ind.head())

Als we de bovenstaande code uitvoeren, levert dat het volgende resultaat op:

                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

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() 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).

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. 

Onderwerpen

Gerelateerd