Gérer les valeurs manquantes lors du tri

Lors du tri des données avec sort_values(), il est possible de spécifier comment gérer les valeurs manquantes (NaN) dans la colonne utilisée pour le tri. Le paramètre na_position permet de définir si les valeurs manquantes doivent être placées en début (‘first’) ou en fin (‘last’) du DataFrame après le tri.

Fonctions :

  • sort_values(by='colonne', na_position='first'/'last')

    La méthode sort_values(by='colonne', na_position='first'/'last') permet de gérer l'ordre des valeurs manquantes (NaN) lors du tri des données dans un DataFrame. Par défaut, les valeurs manquantes sont placées à la fin du tri. Cependant, vous pouvez choisir de les placer au début en utilisant l'option na_position='first'. Cela peut être utile lorsque vous souhaitez donner priorité aux valeurs manquantes ou les analyser séparément.

    Importation :

    import pandas as pd

    Attributs :

    Paramètre Description
    by Nom de la colonne sur laquelle effectuer le tri.
    ascending Booléen ou liste de booléens pour déterminer si le tri est croissant (True) ou décroissant (False). Par défaut, True.
    na_position Détermine la position des valeurs manquantes : 'first' pour placer les NaN en premier et 'last' pour les placer à la fin. Par défaut, 'last'.
    inplace Booléen permettant de modifier le DataFrame en place (si True, les changements sont effectués directement sans créer un nouveau DataFrame).

    Exemple de code :

    import pandas as pd
    
    # Exemple de DataFrame avec des valeurs manquantes
    data = {
        'nom': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
        'âge': [24, 30, None, 30, 24],
        'score': [88, 92, 75, None, 95]
    }
    df = pd.DataFrame(data)
    
    # Trier les valeurs par 'âge' (croissant), en plaçant les NaN en premier
    df_trie_nan_first = df.sort_values(by='âge', ascending=True, na_position='first')
    print("DataFrame trié par âge (NaN en premier) :")
    print(df_trie_nan_first)
    
    # Trier les valeurs par 'score' (décroissant), en plaçant les NaN à la fin
    df_trie_nan_last = df.sort_values(by='score', ascending=False, na_position='last')
    print("\nDataFrame trié par score (NaN à la fin) :")
    print(df_trie_nan_last)
    
    # Trier en place par 'âge', en plaçant les NaN en premier
    df.sort_values(by='âge', ascending=True, na_position='first', inplace=True)
    print("\nDataFrame trié par âge en place (NaN en premier) :")
    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 des données sous forme de DataFrame.

    Création d’un DataFrame avec des valeurs manquantes

    Le dictionnaire data contient des données de cinq colonnes : nom, âge, et score. Certaines de ces valeurs sont manquantes, représentées par None. Ce dictionnaire est ensuite converti en un DataFrame via pd.DataFrame(data), et assigné à la variable df.

    Trier par âge (croissant), en plaçant les NaN en premier

    La méthode sort_values() permet de trier un DataFrame. Le paramètre by='âge' indique que le tri se fait selon la colonne âge, tandis que ascending=True spécifie que le tri doit être croissant. Le paramètre na_position='first' permet de placer les valeurs manquantes (NaN) en premier dans le DataFrame trié.

    df_trie_nan_first = df.sort_values(by='âge', ascending=True, na_position='first') trie donc le DataFrame en plaçant les NaN au début.

    Trier par score (décroissant), en plaçant les NaN à la fin

    Pour trier par la colonne score, le paramètre by='score' est utilisé, avec ascending=False pour un tri décroissant. Le paramètre na_position='last' place les valeurs manquantes à la fin du DataFrame trié.

    df_trie_nan_last = df.sort_values(by='score', ascending=False, na_position='last') trie ainsi les valeurs de score, en mettant les NaN à la fin.

    Trier en place par âge, en plaçant les NaN en premier

    Le tri en place est effectué avec le paramètre inplace=True, ce qui signifie que le DataFrame original sera directement modifié. Comme précédemment, les NaN seront placés en premier grâce au paramètre na_position='first'.

    df.sort_values(by='âge', ascending=True, na_position='first', inplace=True) effectue ce tri directement dans le DataFrame df.