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