2015-08-14 48 views
0

我使用以下代碼從Python中的熊貓數據框生成堆積條形圖(data是DataFrame對象)。更改堆積條形圖中列的順序

data.plot(kind='bar', stacked=True, figsize=(15, 10), x='Species', fontsize=16, rot=0) 

這裏是an IPython Notebook的上下文。

我想改變列的順序。 seaborn.barplot函數有x_order參數,這正是我想要的。但是,它不直接像pandas.DataFrame.plot函數那樣支持堆疊條形圖。重新排列列的最簡單方法是什麼?

回答

1

您可以通過置換數字索引來手動重新排列行,如@iayork給出的答案,或者您可以將數據幀的索引設置爲列Species

species = ['A', 'B', 'H', 'S', 'P', 'N'] 

data2 = data.set_index(['Species']) 
data2.reindex(species).plot(kind='bar', stacked=True, figsize=(15, 10), fontsize=16, rot=0) 

通過設置data指數爲Species,您現在可以通過其字符串標籤置換而不是數字索引行。

+0

小問題,你不需要通過標籤使索引「物種」進行排列。在我的回答中,索引實際上是按標籤排序的,而不是索引,因爲我使用「.loc」而不是「.iloc」;這只是標籤碰巧與索引一致而已。同意結果可能會令人困惑。 – iayork

1

最簡單的方法可能是重新安排您的索引。

data2 = data.loc[[5,4,3,2,1,0]] 

反轉數據幀和繪圖中的順序。