Comment trier une dataframe en fonction d'une colonne donnée sous pandas en python ?

Published: 20 juillet 2020

Tags: Python; Pandas; DataFrame;

DMCA.com Protection Status

Exemple de comment trier une dataframe en fonction d'une colonne donnée sous pandas en python:

Créer une dataframe

Créons par exemple la dataframe suivante

import pandas as pd

data = {'Name':['Ben','Anna','Zoe','Tom','John','Steve','Becky','Bob'], 
        'Age':[20,27,20,43,30,20,22,21]}

df = pd.DataFrame(data)

df

ce qui donne

    Name  Age
0    Ben   20
1   Anna   27
2    Zoe   20
3    Tom   43
4   John   30
5  Steve   20
6  Becky   22
7    Bob   21

Trier la dataframe en fonction de l'age

Trier la dataframe en fonction de l'age, une solution est d'utiliser la fonction sort_values, exemple:

df.sort_values(by=['Age'])

ce qui donne

    Name  Age
0    Ben   20
2    Zoe   20
5  Steve   20
7    Bob   21
6  Becky   22
1   Anna   27
4   John   30
3    Tom   43

Attention ici la dataframe n'a pas été modifiée, pour cela il faut utiliser l'option inplace=True:

df.sort_values(by=['Age'], inplace=True)

donne

    Name  Age
0    Ben   20
1   Anna   27
2    Zoe   20
3    Tom   43
4   John   30
5  Steve   20
6  Becky   22
7    Bob   21

Note: Si on veut uniquement la colonne 'Age', on peut aussi faire comme ceci:

 df['Age'].sort_values()

donne

0    20
2    20
5    20
7    21
6    22
1    27
4    30
3    43

Trier la dataframe en fonction du nom

On peut aussi trier la dataframe en fonction du nom:

df.sort_values(by=['Name'])

print(df.sort_values(by=['Name']))

donne ici

    Name  Age
1   Anna   27
6  Becky   22
0    Ben   20
7    Bob   21
4   John   30
5  Steve   20
3    Tom   43
2    Zoe   20

Trier la dataframe en ordre décroissant

Par défaut les données sont triées par ordre croissant. Pour trier la dataframe en ordre décroissant on peut. utiliser l'option ascending=False:

df.sort_values(by=['Age'],ascending=False)

print(df.sort_values(by=['Age'],ascending=False))

donne

    Name  Age
3    Tom   43
4   John   30
1   Anna   27
6  Becky   22
7    Bob   21
0    Ben   20
2    Zoe   20
5  Steve   20

Trier la dataframe en fonction de deux colonnes ( l'age et le nom)

Trier la dataframe en fonction de l'age

df.sort_values(by=['Age'])

donne

    Name  Age
0    Ben   20
2    Zoe   20
5  Steve   20
7    Bob   21
6  Becky   22
1   Anna   27
4   John   30
3    Tom   43

Trier la dataframe en fonction de l'age et du nom:

df.sort_values(by=['Age','Name'])

print(df.sort_values(by=['Age','Name']))

donne

    Name  Age
0    Ben   20
5  Steve   20
2    Zoe   20
7    Bob   21
6  Becky   22
1   Anna   27
4   John   30
3    Tom   43

Références