J'ai une fonctionnalité appelée smoking_status
qui a 3 valeurs différentes:
1) fume
2) anciennement fumé
3) jamais fumé
La colonne d'entités (smoking_status) a plus de 3 valeurs ainsi que beaucoup de valeurs NaN
comment puis-je traiter les valeurs NaN
parce que mes données ne sont pas numériques, si elles étaient numériques, j'aurais pu les remplacer en utilisant { {X2}} ou mean
. Comment puis-je remplacer les valeurs NaN dans mon cas?
3 réponses
On dirait que la question concerne la méthodologie, pas le problème technique.
Vous pouvez donc essayer
1) La valeur la plus fréquente parmi ces trois;
2) Utilisez d'autres statistiques de champs catégoriques de votre ensemble de données (par exemple, le statut de fumeur le plus courant du groupe);
3) valeurs aléatoires;
4) Catégorie "INCONNU"
Ensuite, vous pouvez faire un codage à chaud et vérifier définitivement vos modèles lors de la validation croisée pour choisir la bonne façon.
Il existe également un moyen plus délicat: utilisez ce statut comme variable cible et essayez de prédire ces NaN avec scikit en utilisant toutes les autres données.
Exemple de données catégorielles:
ser = pd.Categorical(['non', 'non', 'never', 'former', 'never', np.nan])
Remplis-le:
ser.add_categories(['unknown']).fillna('unknown')
Vous donne:
[non, non, never, former, never, unknown]
Categories (4, object): [former, never, non, unknown]
Vous ne disposez pas des données pour ces lignes. Vous pouvez simplement le remplir en valeur médiane ou moyenne, la valeur la plus courante dans cette fonction. Mais dans ce cas particulier, c'est une mauvaise idée compte tenu de la fonctionnalité.
Une meilleure approche serait de remplir une chaîne disant 'unknown' / 'na'
df['smoking_status'].fillna('NA')
Ensuite, vous pouvez étiqueter l'encoder ou convertir la colonne en un encodage à chaud.
Questions connexes
Questions liées
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.