Gérer les valeurs manquantes lors du tri (sort_values(by='colonne', na_position='first'/'last'))

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)

    Explication du code :

    • DataFrame : Un DataFrame est créé avec des valeurs manquantes (NaN) dans les colonnes âge et score.
    • Gestion des NaN avec na_position :
      • Dans le premier exemple, df.sort_values(by='âge', ascending=True, na_position='first') trie les lignes par la colonne âge en ordre croissant, et les valeurs manquantes (NaN) sont placées en première position grâce à na_position='first'.
      • Dans le deuxième exemple, df.sort_values(by='score', ascending=False, na_position='last') trie les lignes par la colonne score en ordre décroissant, avec les valeurs manquantes placées à la fin, ce qui est l'option par défaut.
      • Enfin, l'exemple avec inplace=True modifie directement le DataFrame original et place les NaN en premier dans l'ordre croissant par âge.

    Remarque :

    • Gestion des NaN : L'option na_position='first' est particulièrement utile lorsque vous souhaitez analyser ou traiter les lignes contenant des valeurs manquantes avant celles qui contiennent des valeurs valides.
    • Inplace : L'argument inplace=True permet de modifier le DataFrame en place sans avoir à créer un DataFrame séparé.