2013-01-10 83 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