Ich bin süchtig nach dem Versuch, fehlende Werte in einem DataFrame zu vervollständigen, der eine Zeichenfolge von Zeichenfolgendaten enthält. Notieren Sie sich dies.
Ergänzung nicht vorhandener Daten durch Verwendung von Umgebungsdaten.
Angenommen, Sie haben die folgenden Daten. Die fünfte Zeile der Spalte Geschlecht ist unbekannt. Es gibt verschiedene Methoden der Komplementation, wie die Verwendung des Durchschnittswerts und des Medianwerts, aber dieses Mal möchte ich einfach mit dem Mann ergänzen, der das Geschlecht der Mehrheit darstellt.
Um Daten in den Lernenden einzugeben, müssen die Zeichenkettendaten in numerische Daten umgewandelt werden. Nachdem ich männlich in 0 und weiblich in 1 konvertiert hatte, schrieb ich den Code, um den fehlenden Wert zu vervollständigen. Das heißt, ersetzen Sie unbekannt durch 0 (männlich).
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) #Ersetzen Sie das Männchen durch 0 und das Weibchen durch 1
imr = Imputer(missing_values='unknown', strategy='most_frequent', axis=0)#Ergänzende Objekterstellung
imputed_data = imr.fit_transform(df_sample) #Abschluss anwenden
Geben Sie fehlende Werte in den Methoden "Fehlende Werte" und "Abschluss" (Mittelwert für Durchschnitt, Median für Median) für die Strategie an.
Hier ist der folgende Fehler aufgetreten.
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''
Nach dem Ersetzen der Zeichenfolge durch einen numerischen Wert sah der DataFrame wie folgt aus.
Dies lag daran, dass jede Spalte im DataFrame ein Serienobjekt war und alle Werte vom gleichen Typ waren. Mit anderen Worten, die unbekannte Zeichenfolge und der numerische Wert 0,1 können nicht nebeneinander existieren.
Ich habe den "unbekannten" Teil des Codes in "NaN" geändert und es hat funktioniert.
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) #Ersetzen Sie das Männchen durch 0 und das Weibchen durch 1
imr = Imputer(missing_values='NaN', strategy='most_frequent', axis=0)#Ergänzende Objekterstellung
imputed_data = imr.fit_transform(df_sample) #Abschluss anwenden
Python Machine Learning Programmiertheorie und Implementierung durch Expert Data Scientist (Impress)
Recommended Posts