Wie man ein Balkendiagramm mit nicht-numerischen Daten in pandas
Glaube, ich hatte diese Daten:
>>> df = pd.DataFrame(data={"age": [11, 12, 11, 11, 13, 11, 12, 11],
"response": ["Yes", "No", "Yes", "Yes", "Yes", "No", "Yes", "Yes"]})
>>> df
age response
0 11 Yes
1 12 No
2 11 Yes
3 11 Yes
4 13 Yes
5 11 No
6 12 Yes
7 11 Yes
Ich würde gerne ein Balkendiagramm, das zeigt, die mit ja oder Nein Antworten aggregiert nach Alter. Wäre es überhaupt möglich? Ich habe versucht hist
und kind=bar
, aber keiner war in der Lage zu Sortieren, die durch Alter, stattdessen grafische Darstellung Alter und Reaktion getrennt.
Würde es so Aussehen:
^
4 | o
3 | o
2 | o
1 | ox ox o
0 .----------------------->
11 12 13
wo o
"ja", und x
ist "Nein".
Außerdem wäre es möglich, die zahlen gruppiert? Wenn Sie hatte eine Reichweite von 11 bis 50, zum Beispiel, Sie könnten in der Lage sein, um es in 5-Jahres-bins. Auch wäre es möglich zu zeigen, Prozentsätze oder zählt auf der Achse oder auf die individuellen bar?
- Mit df.Grundstück(Art='bar') würde Ihnen Antworten, dass hatte (11,No), (11,ja),(12,Nein) und so weiter.
df.plot(kind='bar')
, ohne etwas zu tun, plots, bar-plot der index mit y das Alter.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zu
bin
Ihre Daten, nehmen Sie einen Blick aufpandas.cut()
siehe docs. Für kategoriale plots, die ich gefunden habe, dieseaborns
- Paket ganz hilfreich - siehe das tutorial auf kategoriale plots. Unten ein Beispiel für eine grafische Darstellung der ja/Nein-zählt für die Behälter, die Sie erwähnen, anhand einer zufälligen Stichprobe:sns.countplot(x='age_group', hue='response', data=df.sort("response"), palette="Greens_d")
.seaborn
, nichtseaborns
.Generieren ein Vielfaches bar plot, würden Sie die erste Gruppe nach Alter und Reaktion und dann unstack der dataframe:
Hier ist die Ausgabe plot:
TypeError: Empty 'DataFrame': no numeric data to plot
. Jedoch, df selbst ist nicht leer.df =
vor derdf.groupby
. Auch ich wurdeFutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison return np.sum(name == np.asarray(self.names)) > 1
. Aber das ist ein Pandabären-Betrieb. Sollte ich Einreichen, ein Problem, oder ist es etwas, das ich tun kann, dass mich?