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 Réponses :
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()
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.
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.
remplacez
?parNaNen utilisantdf.horsepower.replace ('?', np.NaN, inplace = True)Puis procédez comme d'habitudeSi 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.