2013-01-10 20 views
18

Gegeben:Wie kann ich ein Histogramm in Pandas mit Nennwerten plotten?

ser = Series(['one', 'two', 'three', 'two', 'two']) 

Wie plotten ich ein Grund Histogramm dieser Werte? Hier

ist eine ASCII-Version von dem, was ich wollen würde in matplotlib sehen:

 X 
X X X 
------------- 
one two three 

Ich bin müde des Sehens:

TypeError: cannot concatenate 'str' and 'float' objects 

Antwort

41

Sie die value_counts Methode verwenden:

In [10]: ser.value_counts() 
Out[10]: 
two  3 
one  1 
three 1 

und dann plot this as a bar chart:

ser.value_counts().plot(kind='bar') 

Edit: Ich habe festgestellt, dass dies nicht die gewünschte Reihenfolge hält. Wenn Sie eine Liste/Serie für diese Bestellung haben (in diesem Fall ser[:3] tun wird) können Sie reindex vor dem Plotten:

In [12]: ser.value_counts().reindex(ser[:3]) 
Out[12]: 
one  1 
two  3 
three 1 
+3

das ist genau das, was ich suchte. Vielen Dank! –

+1

Eine Alternative besteht darin, das [seaborn] (https://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.countplot.html) 'countplot' zu verwenden. – Romain

Verwandte Themen