2013-10-19 36 views
6

我有一個數據幀outcome2,我產生一個分組箱線圖在以下方式:如何排序的中值在大熊貓的箱線圖

In [11]: outcome2.boxplot(column='Hospital 30-Day Death (Mortality) Rates from Heart Attack',by='State') 
     plt.ylabel('30 Day Death Rate') 
     plt.title('30 Day Death Rate by State') 
Out [11]: 

enter image description here

我想什麼要按照每個州的中位數來排序,而不是按字母順序排列。不知道如何去做。

+0

你這是什麼意思是「按字母順序排列」?你只想看看每個州的名字的第一個字母嗎?您可以按中位數或按字母順序排序,但不能同時進行。 –

+0

@PhillipCloud錯字,抱歉。應該讀取「而不是按字母順序」作爲默認值。 – Chris

回答

6

要通過中間排序,只是計算中位數,然後進行排序,並使用所產生的IndexDataFrame

In [45]: df.iloc[:10, :5] 
Out[45]: 
     AK  AL  AR  AZ  CA 
0 0.047 0.199 0.969 -0.205 1.053 
1 0.206 0.132 -0.712 0.111 -0.254 
2 0.638 0.233 -0.907 1.284 1.193 
3 1.234 0.046 0.624 0.485 -0.048 
4 -1.362 -0.559 1.108 -0.501 0.111 
5 1.276 -0.954 0.653 -0.175 -0.287 
6 0.524 -1.785 -0.887 1.354 -0.431 
7 0.111 0.762 -0.514 0.808 0.728 
8 1.301 0.619 0.957 1.542 -0.087 
9 -0.892 2.327 1.363 -1.537 0.142 

In [46]: med = df.median() 

In [47]: med.sort() 

In [48]: newdf = df[med.index] 

In [49]: newdf.iloc[:10, :5] 
Out[49]: 
     PA  CT  LA  RI  MO 
0 -0.667 0.774 -0.999 -0.938 0.155 
1 0.822 0.390 -0.014 -2.228 0.570 
2 -1.037 0.838 -0.673 2.038 0.809 
3 0.620 2.845 -0.523 -0.151 -0.955 
4 -0.918 1.043 0.613 0.698 -0.446 
5 -0.767 0.869 -0.496 -0.925 -0.374 
6 -0.495 0.437 1.245 -1.046 0.894 
7 -1.283 0.358 0.016 0.137 0.511 
8 -0.018 -0.047 -0.639 -0.385 0.080 
9 -1.705 0.986 0.605 0.295 0.302 

In [50]: med.head() 
Out[50]: 
PA -0.117 
CT -0.077 
LA -0.072 
RI -0.069 
MO -0.053 
dtype: float64 

由此得出的數字:

enter image description here