2016-11-22 94 views
0

我的目標是創建一個多層次數據框的堆疊條形圖。數據框看起來是這樣的:熊貓疊加排序的條形圖

import pandas as pd 
import numpy as np 

arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux', 'qux']), 
      np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two', 'three'])] 

s = pd.Series([10,20,10,22,10,24,10,26, 11], index=arrays) 

In[1]: s 

Out[1]: 
bar one  10 
    two  20 
baz one  10 
    two  22 
foo one  10 
    two  24 
qux one  10 
    two  26 
    three 11 
dtype: int64 

我有兩個目標:

  1. 建立堆疊的條形圖使得值堆疊4個單箱被稱爲「酒吧,巴茲,FOO,qux」 。

  2. 4個酒吧應按大小排序。在這個例子中,qux欄會有高(10 + 26 + 11 =)47,應該是第一個左邊,後面跟着大小爲(10 + 24)= 34的foo欄。

回答

4
  1. 根據它排序第一級索引的總和:

s_sort = s.groupby(level=[0]).sum().sort_values(ascending=False) 
s_sort 
qux 47 
foo 34 
baz 32 
bar 30 
dtype: int64 
  • 重新索引回使用在新排序的索引值第一級+ unstack + plot:

  • cmp = plt.cm.get_cmap('jet') 
    s.reindex(index=s_sort.index, level=0).unstack().plot.bar(stacked=True, cmap=cmp) 
    

    enter image description here

    +1

    大。不知道「噴氣機」的伎倆。謝謝! – Pat

    +0

    不客氣!是的,在這種環境下,顏色真的很有特色。 –