Je suis accro à essayer de compléter les valeurs manquantes dans un DataFrame qui contient une chaîne de données de chaîne, alors prenez-en note.
Compléter des données inexistantes en utilisant les données environnantes.
Par exemple, supposons que vous ayez les données suivantes. La cinquième ligne de la colonne sexe est inconnue. Il existe diverses méthodes de complémentation, telles que l'utilisation de la valeur moyenne et de la valeur médiane, mais cette fois, je voudrais simplement compléter avec le sexe masculin, qui est le sexe de la majorité.
Afin de saisir des données pour l'apprenant, il est nécessaire de convertir les données de la chaîne de caractères en données numériques. Par conséquent, j'ai écrit le code pour effectuer la complétion des valeurs manquantes après avoir converti un homme en 0 et une femme en 1. Autrement dit, remplacez unknown par 0 (male).
import pandas as pd
from sklearn.preprocessing import Imputer
df_sample = pd.read_csv('sample.csv')
gender_map = {'male':0, 'female':1}
df_sample['gender'] = df_sample['gender'].map(gender_map) #Remplacer mâle par 0 et femelle par 1
imr = Imputer(missing_values='unknown', strategy='most_frequent', axis=0)#Création d'objets complémentaires
imputed_data = imr.fit_transform(df_sample) #Appliquer l'achèvement
Spécifiez les valeurs manquantes dans missing_values et la méthode d'achèvement (moyenne pour moyenne, médiane pour médiane) pour la stratégie.
Ici, j'ai rencontré l'erreur suivante.
TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
En regardant le DataFrame après avoir remplacé la chaîne de caractères par une valeur numérique, c'était comme suit.
Cela était dû au fait que chaque colonne du DataFrame était un objet Series et que toutes les valeurs étaient du même type. En d'autres termes, la chaîne de caractères inconnue et la valeur numérique 0,1 ne peuvent pas coexister.
J'ai changé la partie «inconnue» du code en «NaN» et cela a fonctionné.
import pandas as pd
from sklearn.preprocessing import Imputer
df_sample = pd.read_csv('sample.csv')
gender_map = {'male':0, 'female':1}
df_sample['gender'] = df_sample['gender'].map(gender_map) #Remplacer mâle par 0 et femelle par 1
imr = Imputer(missing_values='NaN', strategy='most_frequent', axis=0)#Création d'objets complémentaires
imputed_data = imr.fit_transform(df_sample) #Appliquer l'achèvement
Théorie et implémentation de la programmation Python Machine Learning par un expert en science des données (Impress)
Recommended Posts