Gérer les valeurs manquantes lors du tri
Lors du tri d’un jeu de données, la présence de valeurs manquantes peut influencer le résultat et la pertinence du classement. Il est donc important de gérer ces valeurs absentes de manière appropriée, en décidant par exemple si elles doivent être placées en début ou en fin du tri, ou encore si elles doivent être exclues. Cette gestion garantit un ordre cohérent et évite les biais dans l’analyse qui pourraient résulter d’une mauvaise prise en compte des données incomplètes.
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 :
import pandas as pd
importe la bibliothèque pandas, renommée ici enpd
, 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
, etscore
. Certaines de ces valeurs sont manquantes, représentées parNone
. Ce dictionnaire est ensuite converti en un DataFrame viapd.DataFrame(data)
, et assigné à la variabledf
.Trier par âge (croissant), en plaçant les NaN en premier
La méthode
sort_values()
permet de trier un DataFrame. Le paramètreby='âge'
indique que le tri se fait selon la colonneâge
, tandis queascending=True
spécifie que le tri doit être croissant. Le paramètrena_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 lesNaN
au début.Trier par score (décroissant), en plaçant les NaN à la fin
Pour trier par la colonne
score
, le paramètreby='score'
est utilisé, avecascending=False
pour un tri décroissant. Le paramètrena_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 descore
, en mettant lesNaN
à 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, lesNaN
seront placés en premier grâce au paramètrena_position='first'
.df.sort_values(by='âge', ascending=True, na_position='first', inplace=True)
effectue ce tri directement dans le DataFramedf
.