Ich meine so etwas:
Ich habe ein DataFrame
mit Spalten, die kategorisch oder nominal sein können. Für jede Beobachtung (Zeile) möchte ich eine neue Zeile erzeugen, in der jeder mögliche Wert für die Variablen nun eine eigene binäre Variable ist. Zum Beispiel, diese Matrix (erste Zeile ist Spaltenbeschriftungen)
würde in etwa so umgewandelt werden:
%Vor%Jede Variable (Spalte) in der Ausgangsmatrix wird in alle möglichen Werte unterteilt. Wenn es kategorisch ist, wird jeder mögliche Wert eine neue Spalte. Wenn es sich um ein Float handelt, werden die Werte auf eine bestimmte Art und Weise gruppiert (z. B. werden sie immer in 10 Bins aufgeteilt). Wenn es ein int ist, dann kann es jeder mögliche int-Wert oder vielleicht auch binning sein.
Zu Ihrer Information: In meiner realen Anwendung hat die Tabelle bis zu 2 Millionen Zeilen und die vollständige "erweiterte" Matrix kann Hunderte von Spalten haben.
Gibt es eine einfache Möglichkeit, diese Operation durchzuführen?
Getrennt wäre ich auch bereit, diesen Schritt zu überspringen, da ich wirklich versuche, eine Burt-Tabelle zu berechnen (die eine symmetrische Matrix der Kreuztabellen ist). Gibt es einen einfachen Weg, etwas Ähnliches mit der Funktion crosstab
zu machen? Andernfalls ist die Berechnung der Kreuztabelle nur eine einfache Matrixmultiplikation.
Beachten Sie, dass ich die neuen Funktionen cut
und qcut
zur Diskretisierung kontinuierlicher Daten implementiert habe:
Für beschriftete Spalten wie die Spalte a
und c
in Ihrem Beispiel können Sie die eingebaute Methode pandas verwenden get_dummies () .
Beispiel:
%Vor%