Pandas DataFrame DataFrame.sort_values() Funktion

Suraj Joshi 30 Januar 2023
  1. Syntax von pandas.DataFrame.sort_values():
  2. Beispiel-Codes: DatenFrame mit Pandas sortieren pandas.DataFrame.sort_values() Basierend auf einer einzelnen Spalte
  3. Beispiel-Codes: DataFrame mit Pandas sortieren DataFrame.sort_values() Basierend auf mehreren Spalten
  4. Beispiel-Codes: DataFrame in absteigender Reihenfolge mit Pandas sortieren DataFrame.sort_values()
  5. Beispiel-Codes: DataFrame sortieren, indem man NaN mit Pandas an erster Stelle setzt DataFrame.sort_values()
Pandas DataFrame DataFrame.sort_values() Funktion

Die Methode Pandas DataFrame.sort_values() sortiert den Aufrufer DataFrame in aufsteigender oder absteigender Reihenfolge nach Werten in der angegebenen Spalte entlang eines der beiden Indizes.

Syntax von pandas.DataFrame.sort_values():

DataFrame.sort_values(
    by,
    axis=0,
    ascending=True,
    inplace=False,
    kind="quicksort",
    na_position="last",
    ignore_index=False,
)

Parameter

by Name oder Liste von Namen zum Sortieren nach
axis entlang der row (axis=0) oder column (axis=1) sortieren
ascending in aufsteigender Reihenfolge (ascending=True) oder absteigender Reihenfolge (ascending=False) sortieren
inplace Boolesch. Wenn True, modifizieren Sie den Aufrufer DataFrame an Ort und Stelle
kind welcher Sortieralgorithmus verwendet werden soll. default:quicksort
na_position Setzen Sie den Wert NaN an den Anfang (na_position=first) oder an das Ende (na_position=last)
ignore_index Boolesch. Wenn True, werden die Indizes aus dem ursprünglichen DataFrame ignoriert. Der Standardwert ist False, was bedeutet, daß die Indizes verwendet werden.
Neu in Version 1.0.0

Zurück

Wenn inplace gleich True ist, gibt es den sortierten DataFrame zurück; andernfalls None.

Beispiel-Codes: DatenFrame mit Pandas sortieren pandas.DataFrame.sort_values() Basierend auf einer einzelnen Spalte

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Price'])
print("After Sorting:")
print(sorted_df)

Ausgabe:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
       Date  Sales  Price
1  April-11    300      1
2  April-12    400      2
5  April-16    300      2
0  April-10    200      3
4  April-14    300      3
3  April-13    200      4

Sortiert den DataFrame df in aufsteigender Reihenfolge (Voreinstellung) nach Werten in der Spalte Price.

Die Indizes im sortierten DataFrame bleiben die gleichen wie im ursprünglichen DataFrame.

Wenn Sie es vorziehen, die neue Indexspalte im sortierten DataFrame zu haben, dann können Sie ignore_index (eingeführt ab Version 1.0.0) auf True setzen.

import pandas as pd

dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]

df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
print("Before Sorting:")
print(df)
sorted_df = df.sort_values(by=["Price"], ignore_index=True)
print("After Sorting:")

Ausgabe:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-11    300      1
1  April-12    400      2
2  April-16    300      2
3  April-10    200      3
4  April-14    300      3
5  April-13    200      4

Hier verwenden wir ignore_index=True, um Zeilen neue Indexe zuzuweisen und den Index des ursprünglichen DataFrame zu ignorieren.

Beispiel-Codes: DataFrame mit Pandas sortieren DataFrame.sort_values() Basierend auf mehreren Spalten

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
df.sort_values(by=['Sales','Price'],
               ignore_index=True,
               inplace=True)
print("After Sorting:")
print(df)

Ausgabe:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-13    200      4
2  April-11    300      1
3  April-16    300      2
4  April-14    300      3
5  April-12    400      2

Hier wird zunächst der Sales zuerst in aufsteigender Reihenfolge sortiert, und dann wird auch der Price für jeden Sales aufsteigend sortiert.

In der Spalte df ist 200 der kleinste Wert der Spalte Sales und 3 der kleinste Wert der Spalte Preis für den Wert Sales von 200.

Die Zeile mit 200 in der Spalte Sales und 3 in der Spalte Price geht also nach oben.

Aufgrund von inplace=True wird der ursprüngliche DataFrame nach dem Aufruf der Funktion sort_values() modifiziert.

Beispiel-Codes: DataFrame in absteigender Reihenfolge mit Pandas sortieren DataFrame.sort_values()

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Sales'],
                         ignore_index=True,
                         ascending=False)
print("After Sorting:")
print(sorted_df)

Ausgabe:


Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-12    400      2
1  April-11    300      1
2  April-14    300      3
3  April-16    300      2
4  April-10    200      3
5  April-13    200      4

Es sortiert den DataFrame df in der absteigenden Reihenfolge der Werte der Spalte Sales.

400 ist der größte Wert in der Spalte Sales; daher geht der Eintrag nach oben, und andere Zeilen werden entsprechend sortiert.

Beispiel-Codes: DataFrame sortieren, indem man NaN mit Pandas an erster Stelle setzt DataFrame.sort_values()

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Price'],ignore_index=True,na_position='first')
print("After Sorting:")
print(sorted_df)

Ausgabe:

Before Sorting:
       Date  Sales  Price
0  April-10    200    NaN
1  April-11    300    1.0
2  April-12    400    2.0
3  April-13    200    4.0
4  April-14    300    3.0
5  April-16    300    NaN
After Sorting:
       Date  Sales  Price
0  April-10    200    NaN
1  April-16    300    NaN
2  April-11    300    1.0
3  April-12    400    2.0
4  April-14    300    3.0
5  April-13    200    4.0

Standardmäßig werden NaN-Werte nach der Sortierung an das Ende von DataFrame gesetzt.

Aber durch Setzen von na_position=first können wir die NaN Werte an den Anfang von DataFrame setzen.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Verwandter Artikel - Pandas DataFrame