2013-01-10 89 views
18

考慮:如何使用名義值在熊貓中繪製直方圖?

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

如何繪製這些值的基本直方圖?

這裏是什麼,我會希望在matplotlib看到一個ASCII版本:

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

我厭倦了看到:

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

回答

41

你可以使用value_counts方法:

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

然後plot this as a bar chart

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

編輯:我注意到,這並沒有保持所需的順序。如果您有此排序列表/系列(在這種情況下ser[:3]會做),你繪製之前可以reindex

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

這正是我一直在尋找。非常感謝你! –

+1

另一種方法是使用[seaborn](https://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.countplot.html)'countplot'。 – Romain