Trier par plusieurs colonnes (sort_values(by=['colonne1', 'colonne2']))

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)

    Explication du code :

    • DataFrame : Un DataFrame est créé avec des données fictives comprenant les colonnes nom, âge, score, et ville.
    • Tri par plusieurs colonnes avec sort_values() :
      • La première opération trie les données par la colonne âge en ordre croissant (par défaut, ascending=True), puis, si plusieurs lignes ont le même âge, elles seront triées par la colonne score en ordre décroissant (ascending=False).
      • La deuxième opération trie le DataFrame en place par la colonne ville en ordre croissant (ascending=True), et si deux villes sont identiques, il trie les valeurs de la colonne nom en ordre décroissant (ascending=False).

    Remarque :

    • Liste de colonnes et ordre de tri : L'argument by accepte une liste de colonnes, permettant un tri par plusieurs critères. De plus, l'argument ascending peut être soit un seul booléen (appliqué à toutes les colonnes), soit une liste de booléens, un pour chaque colonne. Cela permet de personnaliser l'ordre de tri pour chaque colonne.
    • Inplace : L'argument inplace=True modifie directement le DataFrame sans créer de copie.