Anwenden von benutzerdefinierten Spalte, um die pandas boxplot?
Bekomme ich eine boxplot Gehalt-Spalte in ein pandas DataFrame...
train.boxplot(column='PredictionError',by='Category',sym='')
...aber ich kann nicht herausfinden, wie definieren Sie den index-Reihenfolge auf die Spalte 'Kategorie' - ich will meine eigenen Auftrag, nach einem anderen Kriterium:
category_order_by_mean_salary = train.groupby('Category')['Salary'].mean().order().keys()
Wie kann ich meine benutzerdefinierte Spalte, um die boxplot Spalten? (andere als hässlich kludging die Spalte Namen mit einem Präfix, um zu erzwingen, Bestellung)
'Kategorie' ist eine string-Spalte unter 27 unterschiedliche Werte: ['Accounting & Finance Jobs','Admin Jobs',...,'Travel Jobs']
. So kann es leicht faktorisierten mit pd.Categorical.from_array()
Bei der Prüfung der Verjährung ist innerhalb pandas.tools.plotting.py:boxplot()
, wandelt der Spalte Objekt, ohne dass der Bestellung:
- pandas.core.frame.py.boxplot() ist ein passthrough
- pandas.tools.Plotten.py:boxplot()
die instanziiert ... - matplotlib.pyplot.py:boxplot() , die instanziiert ...
- matplotlib.Achsen.py:boxplot()
Ich glaube, ich könnte entweder hacken bis eine benutzerdefinierte version des pandas boxplot(), oder gelangen in das innere des Objekts. Und auch Datei, die eine Verbesserung verlangen.
EDIT: diese Frage stellte sich mit pandas ~0.13-und hat wahrscheinlich schon überholt ist von neueren (0.19+?) Versionen wie pro @Cireo die späte Antwort.
InformationsquelleAutor smci | 2013-03-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schwer zu sagen, wie dies zu tun, ohne ein funktionierendes Beispiel. Meine erste Vermutung wäre, fügen Sie einfach eine integer-Spalte mit den Anweisungen, die Sie wollen.
Einfache, brute-force-Weg wäre um jeden boxplot ein zu einer Zeit.
pandas DataFrame nicht in den Griff eine Kategorische Spalte, im Gegensatz zu R.
nicht, wo ich war headed. Ich in der Regel verwenden Sie einfach
apply
mit einem hard-codierten lookup-Tabelle. siehe meine bearbeitete Antwort für einen anderen Ansatz, aber.Duh! Warum habe ich nicht daran denke! Gute Idee.
InformationsquelleAutor Paul H
Eigentlich kam ich nicht weiter mit der gleichen Frage. Und ich löste es, indem Sie eine Karte, und setzen Sie die xticklabels, mit code wie folgt:
InformationsquelleAutor Zhenyu
Beachten Sie, dass pandas können nun kategorischen Spalten. Wenn Sie nichts dagegen haben, dass alle Spalten, die in Ihrer Grafik, oder kürzen Sie entsprechend, können Sie etwas tun, wie die unten:
http://pandas.pydata.org/pandas-docs/stable/categorical.html
Letzten pandas scheint auch zu ermöglichen
positions
passieren den ganzen Weg durch von Rahmen, Achsen.Der link sagte, 0.15, aber ich war misstrauisch. Ich bin mir nicht sicher, ob die Funktion vollständig integriert. Ich war in der Lage, all dies zu tun in
0.19.2
Vielen Dank für die überprüfung.
InformationsquelleAutor Cireo
Hinzufügen einer separaten Antwort, die vielleicht sein könnte, eine andere Frage - feedback willkommen.
Wollte ich eine benutzerdefinierte Spalte hinzuzufügen, um innerhalb eines groupby, die früher viele Probleme für mich. Am Ende hatte ich zu vermeiden versucht -
boxplot
aus einergroupby
Objekt, und stattdessen gehen Sie durch jede Nebenhandlung mich, die explizite Positionen.In meinem endgültigen code, es war sogar etwas mehr beteiligt, um zu bestimmen, Positionen, denn ich hatte mehrere Datenpunkte für jeden sortby Wert, und ich landete mit zu tun, die folgenden:
War nicht sicher, wie die Etikette der Entsendung eine Frage dann beantwortet es sich selbst =/
das ist vollkommen ok. Auch in diesem Fall wünschenswert - diese Frage obsolet geworden ist, irgendwann von pandas 0.19
InformationsquelleAutor Cireo