2
votes

Gérer la valeur manquante dans une colonne à l'aide de pandas

J'utilise l'ensemble de données Auto MPG qui contient des valeurs manquantes dans la colonne / l'attribut puissance sous la forme de caractères ? .

Par conséquent, lorsque j'utilise le code -

data["horsepower"].isnull.values.any()

OU

data.isnull.values.any()

Les deux renvoient False car ces codes fonctionnent pour NaN valeurs ou valeurs vides.

Comment puis-je localiser de telles valeurs manquantes contenant un caractère spécial, qui dans mon cas se trouve être ? plutôt que la ou les valeurs NaN traditionnelles. p>

Merci!


3 commentaires

remplacez ? par NaN en utilisant df.horsepower.replace ('?', np.NaN, inplace = True) Puis procédez comme d'habitude


Si vous lisez vos données à partir d'un fichier csv, indiquez na_values ​​ comme ? dans read_csv. pour plus de détails, visitez pandas.pydata.org/pandas-docs/ stable / généré /…


@MohamedThasinah J'ai vérifié ma réponse avant de publier. Ça marche.


3 Réponses :


2
votes

Utilisez replace avant de vérifier NaNs:

data = pd.read_csv(path, na_values=["?"])
data["horsepower"].isnull().values.any()

Si DataFrame est créé par read_csv ajouter un paramètre na_values ​​ pour convertir ? en NaN s:

data["horsepower"].replace('?',np.nan).isnull().values.any()


0 commentaires

2
votes

vous pouvez définir na_values ​​ comme ? ou utiliser ce qui suit:

df.replace(r'[\W]',np.nan,regex=True)

\ W en trouve caractère qui n'est pas une lettre, un chiffre numérique ou le caractère de soulignement.


0 commentaires

1
votes

vous devez d'abord convertir ? en NaN . Ensuite, vous pouvez y chercher des valeurs nulles.

1) pour convertir ? en NaN :

pd.isna(data['horsepower'])

2) pour trouver des valeurs nulles:

data.replace('?',np.NaN)

il retournera un dataframe avec une série de Vrai/False.


0 commentaires