Comment trier le DataFrame de Pandas par les valeurs d'une colonne

Asad Riaz 30 janvier 2023
  1. Ordre de tri des dataframes - Argument ascending
  2. Ordre de tri des données - Argument na_position
Comment trier le DataFrame de Pandas par les valeurs d'une colonne

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

Article connexe - Pandas DataFrame