2016-03-07 50 views
2

考慮下面的分類pd.Series保留類別順序圖表時/繪製有序分類系列

In [37]: df = pd.Series(pd.Categorical(['good', 'good', 'ok', 'bad', 'bad', 'awful', 'awful'], categories=['bad', 'ok', 'good', 'awful'], ordered=True)) 

In [38]: df 
Out[38]: 
0  good 
1  good 
2  ok 
3  bad 
4  bad 
5 awful 
6 awful 
dtype: category 
Categories (4, object): [bad < ok < good < awful] 

我要畫這些的餅圖或條形圖。據this SO answer,繪製分類Series需要我繪製value_counts,但這並不保留分類排序:

df.value_counts().plot.bar() 

我如何可以繪製有序分類變量,並保留排序? Bar chart

回答

3

可以在value_counts添加參數sort=False

print df.value_counts() 
awful 2 
good  2 
bad  2 
ok  1 
dtype: int64 

print df.value_counts(sort=False) 
bad  2 
ok  1 
good  2 
awful 2 
dtype: int64 

print df.value_counts(sort=False).plot.bar() 

graph

或者添加sort_index

print df.value_counts().sort_index() 
bad  2 
ok  1 
good  2 
awful 2 
dtype: int64 

print df.value_counts().sort_index().plot.bar() 
+0

二的解決方案或許應該是第一。 – Alexander

+0

@亞歷山大 - 謝謝,解決方案已交換。 – jezrael