Pandas DataFrame DataFrame.sort_values()Fonction

Suraj Joshi 30 janvier 2023
  1. Syntaxe de pandas.DataFrame.sort_values ​​():
  2. Exemples de codes: Triez DataFrame avec Pandas pandas.DataFrame.sort_values ​​() sur la base d’une seule colonne
  3. Exemples de codes: trier DataFrame avec Pandas DataFrame.sort_values ​​() sur la base de plusieurs colonnes
  4. Exemples de codes: Triez DataFrame dans l’ordre décroissant avec Pandas DataFrame.sort_values ​​()
  5. Exemples de codes: Triez DataFrame en mettant NaN en premier avec Pandas DataFrame.sort_values ​​()
Pandas DataFrame DataFrame.sort_values()Fonction

Pandas DataFrame.sort_values ​​() trie l’appelant DataFrame dans l’ordre croissant ou ordre décroissant par valeurs dans la colonne spécifiée le long des deux index.

Syntaxe de pandas.DataFrame.sort_values ​​():

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

Paramètres

by Nom ou liste de noms à trier
axis trier le long de la ligne (axis = 0) ou de la colonne (axis = 1)
ascending trier dans l’ordre croissant (ascendant = vrai) ou dans l’ordre descendant (ascendant = faux)
inplace Booléen. Si True, modifiez l’appelant DataFrame sur place
kind quel algorithme de tri utiliser. par défaut: quicksort
na_position Mettez la valeur NaN au début (na_position = first) ou à la fin (na_position = last)
ignore_index Booléen. Si True, les index du DataFrame d’origine sont ignorés. La valeur par défaut est False, ce qui signifie que les index sont utilisés.
Nouveau dans la version 1.0.0

Revenir

Si inplace vaut True, il retourne le DataFrame trié; sinon None.

Exemples de codes: Triez DataFrame avec Pandas pandas.DataFrame.sort_values ​​() sur la base d’une seule colonne

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)

Production:

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

Il trie le DataFrame df dans l’ordre croissant (par défaut) par valeurs dans la colonne Price.

Les index dans le DataFrame trié restent les mêmes que dans le DataFrame d’origine.

Si vous préférez avoir la nouvelle colonne d’index dans le DataFrame trié, vous pouvez définir ignore_index (introduit à partir de la version 1.0.0) sur True.

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:")

Production:

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

Ici, nous utilisons ignore_index = True pour affecter de nouveaux index aux lignes et ignorer l’index du DataFrame d’origine.

Exemples de codes: trier DataFrame avec Pandas DataFrame.sort_values ​​() sur la base de plusieurs colonnes

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)

Production:

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

Ici, dans un premier temps, Sales est d’abord trié dans l’ordre croissant, puis Price pour chaque Sales est également trié dans l’ordre croissant.

Dans le df, 200 est la plus petite valeur de la colonne Sales et 3 est la plus petite valeur de la colonne Price pour la valeur Sales de 200.

Ainsi, la ligne avec 200 dans la colonne Sales et 3 dans le Price va en haut.

En raison de inplace = True, le DataFrame d’origine est modifié après l’appel de la fonction sort_values​​().

Exemples de codes: Triez DataFrame dans l’ordre décroissant avec Pandas 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)

Production:


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

Il trie le DataFrame df dans l’ordre décroissant des valeurs de la colonne Sales.

400 est la valeur la plus élevée dans la colonne Sales; par conséquent, l’entrée va en haut et les autres lignes sont triées en conséquence.

Exemples de codes: Triez DataFrame en mettant NaN en premier avec Pandas 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)

Production:

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

Par défaut, les valeurs de NaN sont placées à la fin de DataFrame après le tri.

Mais en définissant na_position = first, nous pouvons placer les valeurs NaN au début de DataFrame.

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Article connexe - Pandas DataFrame