Trier par plusieurs colonnes

La méthode sort_values() permet de trier un DataFrame par plusieurs colonnes en spécifiant une liste de colonnes dans le paramètre by. Cela est utile lorsque vous souhaitez trier les données selon plusieurs critères dans un ordre spécifique. Par défaut, le tri se fait dans un ordre croissant, mais vous pouvez également contrôler l’ordre pour chaque colonne avec le paramètre ascending.

Fonctions :

  • sort_values(by=['colonne1', 'colonne2'])

    La méthode sort_values(by=['colonne1', 'colonne2']) permet de trier les données par plusieurs colonnes à la fois. Vous pouvez spécifier une liste de colonnes sur lesquelles effectuer le tri, et les données seront triées d’abord par la première colonne, puis par la deuxième, et ainsi de suite. Cela permet de réaliser un tri complexe pour organiser les données de manière plus précise.

    Importation :

    import pandas as pd

    Attributs :

    Paramètre Description
    by Liste des colonnes sur lesquelles effectuer le tri, dans l'ordre de priorité (ex : ['colonne1', 'colonne2']).
    ascending Liste de booléens indiquant l'ordre de tri pour chaque colonne. Par défaut, True (ordre croissant). Si False, l'ordre est décroissant.
    inplace Booléen qui permet de modifier le DataFrame en place. Si True, le DataFrame est modifié sans création d’une nouvelle copie. Par défaut, False.

    Exemple de code :

    import pandas as pd
    
    # Exemple de DataFrame
    data = {
        'nom': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
        'âge': [24, 30, 35, 30, 24],
        'score': [88, 92, 75, 85, 95],
        'ville': ['Paris', 'Lyon', 'Marseille', 'Paris', 'Lyon']
    }
    df = pd.DataFrame(data)
    
    # Trier les valeurs par 'âge' (ascendant) puis par 'score' (descendant)
    df_trie = df.sort_values(by=['âge', 'score'], ascending=[True, False])
    print("DataFrame trié par âge (ascendant) puis score (descendant) :")
    print(df_trie)
    
    # Trier en place par 'ville' puis 'nom'
    df.sort_values(by=['ville', 'nom'], ascending=[True, False], inplace=True)
    print("\nDataFrame trié par ville (ascendant) puis nom (descendant) en place :")
    print(df)
    Résultat du code

    Explication du code :

    import pandas as pd importe la bibliothèque pandas, renommée ici en pd, pour faciliter la manipulation de données tabulaires.

    Création d’un DataFrame

    Le dictionnaire data contient les données de cinq colonnes : nom, âge, score et ville. Ce dictionnaire est ensuite converti en un DataFrame via pd.DataFrame(data), et assigné à la variable df.

    Trier par âge (ascendant) puis score (descendant)

    La méthode sort_values() permet de trier le DataFrame selon plusieurs colonnes en même temps. Le paramètre by=['âge', 'score'] spécifie que le tri doit se faire d'abord par la colonne âge (ascendant), puis par la colonne score (descendant).

    ascending=[True, False] indique que le tri sur la colonne âge sera ascendant (par défaut), et le tri sur score sera descendant (le plus grand score en premier).

    df_trie = df.sort_values(by=['âge', 'score'], ascending=[True, False]) trie donc le DataFrame selon ces critères et crée un nouveau DataFrame nommé df_trie.

    Trier en place par ville puis nom

    Le tri en place est effectué avec le paramètre inplace=True, ce qui signifie que le DataFrame original sera modifié.

    df.sort_values(by=['ville', 'nom'], ascending=[True, False], inplace=True) trie le DataFrame selon la colonne ville (ascendant) et ensuite selon la colonne nom (descendant), directement dans le DataFrame df.