Wie wird eine benutzerdefinierte Spaltenreihenfolge auf pandas boxplot angewendet?

8

Ich kann ein Boxplot einer Gehaltspalte in einem Pandas DataFrame bekommen ...

%Vor%

... aber ich kann nicht herausfinden, wie man die Indexreihenfolge in der Spalte 'Kategorie' definiert - Ich möchte meine eigene benutzerdefinierte Bestellung nach einem anderen Kriterium liefern:

%Vor%

Wie kann ich meine benutzerdefinierte Spaltenreihenfolge auf die Boxplot-Spalten anwenden? (außer hässlich Klonung der Spaltennamen mit einem Präfix, um die Reihenfolge zu erzwingen)

'Kategorie' ist eine Zeichenkettenspalte, die 27 verschiedene Werte annimmt: ['Accounting & Finance Jobs','Admin Jobs',...,'Travel Jobs'] . So kann es leicht mit pd.Categorical.from_array()

faktorisiert werden

Bei der Überprüfung liegt die Einschränkung innerhalb von pandas.tools.plotting.py:boxplot() , wodurch das Spaltenobjekt konvertiert wird, ohne die Reihenfolge zu ändern:

Ich nehme an, ich könnte entweder eine benutzerdefinierte Version von Pandas Boxplot () hacken oder in die Interna des Objekts greifen. Und auch eine Erweiterungsanforderung einreichen.

BEARBEITEN: Diese Frage ist mit Pandas ~ 0.13 entstanden und wurde wahrscheinlich von den letzten (0.19+?) Versionen nach @ Cireos späte Antwort veraltet.

    
smci 21.03.2013, 07:09
quelle

3 Antworten

6

Schwer zu sagen, wie man das ohne ein funktionierendes Beispiel macht. Meine erste Schätzung wäre, nur eine ganzzahlige Spalte mit den gewünschten Ordnungen hinzuzufügen.

Ein einfacher, brutaler Weg wäre, jeden Boxplot einzeln hinzuzufügen.

%Vor%

    
Paul H 21.03.2013, 15:34
quelle
2

Hinzufügen einer separaten Antwort, die vielleicht eine andere Frage sein könnte - Feedback geschätzt.

Ich wollte eine benutzerdefinierte Spaltenreihenfolge innerhalb einer groupby hinzufügen, was für mich viele Probleme aufwarf. Am Ende musste ich vermeiden, boxplot von einem groupby -Objekt zu verwenden und stattdessen jedes Teilplot selbst zu durchlaufen, um explizite Positionen bereitzustellen.

%Vor%

In meinem letzten Code war es sogar etwas mehr involviert, um Positionen zu bestimmen, weil ich mehrere Datenpunkte für jede Art von Wert hatte, und ich musste das folgende machen:

%Vor%     
Cireo 18.05.2017 22:48
quelle
1

Beachten Sie, dass Pandas jetzt kategorische Spalten erstellen können. Wenn es Ihnen nichts ausmacht, alle Spalten in Ihrem Diagramm zu haben oder sie entsprechend zu beschneiden, können Sie Folgendes tun:

Ссылка

%Vor%

Kürzlich erschienene Pandas scheinen es auch zuzulassen, dass positions den ganzen Weg vom Bild zu den Achsen durchläuft.

Cireo 18.05.2017 20:48
quelle