HOWTO · Pandas
Comment trier le DataFrame de Pandas par les valeurs d'une colonne
Ce tutoriel montre comment trier les données Pandas par colonne.
Sur cette page
Nous allons introduire la méthode pandas.DataFrame.sort_values pour trier les valeurs de DataFrame, et ses options comme ascending pour spécifier l’ordre de tri et na_position qui détermine la position de NaN dans le résultat trié.
Considérons la DataFrame suivante,
import pandas as pd
df = pd.DataFrame(
{
"col1": ["g", "t", "n", "w", "n", "g"],
"col2": [5, 2, 5, 1, 3, 6],
"col3": [0, 7, 2, 8, 1, 2],
}
)
print(df)
Si vous exécutez ce code, vous obtiendrez la sortie suivante qui n’est pas encore triée.
col1 col2 col3
0 g 5 0
1 t 2 7
2 n 5 2
3 w 1 8
4 n 3 1
5 g 6 2
Nous pourrions maintenant trier la DataFrame avec les codes ci-dessous.
import pandas as pd
df = pd.DataFrame(
{
"col1": ["g", "t", "n", "w", "n", "g"],
"col2": [5, 2, 5, 1, 3, 6],
"col3": [0, 7, 2, 8, 1, 2],
}
)
print(df.sort_values(by=["col1"]))
Nous trions la DataFrame par col1. Après avoir exécuté le code ci-dessus, vous obtiendrez le résultat suivant.
col1 col2 col3
0 g 5 0
5 g 6 2
2 n 5 2
4 n 3 1
1 t 2 7
3 w 1 8
Nous pouvons également utiliser plus d’une colonne pour le tri. Changeons la dernière ligne des codes ci-dessus comme suit,
print(df.sort_values(by=["col1", "col2"]))
Après avoir exécuté le code, nous obtiendrons la sortie suivante.
col1 col2 col3
0 g 5 0
5 g 6 2
4 n 3 1
2 n 5 2
1 t 2 7
3 w 1 8
Maintenant, DataFrame est également trié par col2.
Ordre de tri des dataframes - Argument ascending
Par défaut, le tri est en ordre croissant, pour trier les DataFrame en ordre décroissant, nous devons mettre le drapeau ascending=False.
print(df.sort_values(by=["col1", "col2"], ascending=False))
Après avoir exécuté le code, nous obtiendrons la sortie suivante.
col1 col2 col3
3 w 1 8
1 t 2 7
2 n 5 2
4 n 3 1
5 g 6 2
0 g 5 0
Ordre de tri des données - Argument na_position
na_position spécifie la position de NaN après le tri, c’est-à-dire que last met NaN à la fin. Sa valeur par défaut est first qui met NaN au début du résultat trié.
Considérons la DataFrame suivante,
import numpy as np
import pandas as pd
s = pd.Series([np.nan, 2, 4, 10, 7])
print(s.sort_values(na_position="last"))
Après avoir exécuté le code, nous obtiendrons la sortie suivante.
1 2.0
2 4.0
4 7.0
3 10.0
0 NaN