2016-11-07 8 views
3

Ich habe eine CSV-Datei, die 25 Spalten hat einige sind numerisch und einige sind kategorisch und einige sind wie Namen von Schauspielern, Regisseuren. Ich möchte Regressionsmodelle für diese Daten verwenden. Um dies zu tun, muss ich die String-Typen der kategorischen Spalten in numerische Werte umwandeln, indem ich den LabelBinarizer aus dem scikit-Paket verwende. Wie kann ich LabelBinarize für diesen Datenrahmen verwenden, der mehrere kategorische Daten enthält?LabelBinizerizer für mehrere Spalten im Datenrahmen

SampleData

Grund mag ich die Etiketten digitalisieren, und sie den Datenrahmen hinzufügen.

Im folgenden Code habe ich die Liste der Spalten abgerufen, die ich binarisieren nicht in der Lage, herauszufinden, wie die neue Spalte zurück zu der df hinzufügen?

categorylist = ['color', 'language', 'country', 'content_rating'] 
for col in categorylist: 
    tempdf = label_binarizer.fit_transform(df[col]) 

Im nächsten Schritt möchte ich die tempdf zu df hinzufügen und die ursprüngliche Spalte df [col] fallen.

+0

Ist 'df' in Ihrem Code ein Pandas Dataframe? Bitte beachten Sie, dass die Ausgabe von 'sklearn' Methoden (wie' fit_transform' in Ihrem Code) ein numpy Array ist! Daher ist 'tempdf' in Ihrem Code kein' Pandas' dataframe! Zuerst müssen Sie es in einen Datenrahmen konvertieren (zum Beispiel 'newdf = pd.DataFrame (tempdf)') und dann concat es zu Ihrem 'df'. Sie können die Spalten auch mit 'del df ['column_name']' 'löschen. Ein letzter Kommentar ist, um sicherzustellen, ob Sie 'LableBinalizer' oder' MultiLabelBinarizer' benötigen. – MhFarahani

Antwort

3

Sie können dies in einem Einzeiler mit pd.get_dummies:

tempdf = pd.get_dummies(df, columns=categorylist) 

Ansonsten können Sie eine FeatureUnion mit FunctionTransformer wie in der Antwort auf sklearn pipeline - how to apply different transformations on different columns verwenden

EDIT: von @dukebody hinzugefügt Wie In den Kommentaren können Sie auch das Paket sklearn-pandas verwenden, mit dem verschiedene Transformationen auf jede Datenrahmenspalte angewendet werden können.

+1

Sie können auch das Paket sklearn-pandas verwenden, mit dem verschiedene Transformationen auf jede Datenspaltenspalte angewendet werden können. – dukebody

+0

@Dukebody das sieht sehr praktisch aus! – maxymoo

Verwandte Themen