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)
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
.