2015-04-25 31 views
9

Tôi có mẫu số liệu sau đây:Boxplot với gấu trúc và groupby

 0   1 
0 0 0.040158 
1 2 0.500642 
2 0 0.005694 
3 1 0.065052 
4 0 0.034789 
5 2 0.128495 
6 1 0.088816 
7 1 0.056725 
8 0 -0.000193 
9 2 -0.070252 
10 2 0.138282 
11 2 0.054638 
12 2 0.039994 
13 2 0.060659 
14 0 0.038562 

Và cần một hộp và cốt truyện râu ria, nhóm lại theo cột 0. Tôi đã điều sau đây:

plt.figure() 
grouped = df.groupby(0) 
grouped.boxplot(column=1) 
plt.savefig('plot.png') 

Nhưng tôi kết thúc lên với ba subplots. Làm thế nào có thể đặt tất cả ba trên một lô? Cảm ơn. enter image description here

Trả lời

5

Tôi không tin rằng bạn cần phải sử dụng groupby.

df2 = df.pivot(columns=df.columns[0], index=df.index) 
df2.columns = df2.columns.droplevel() 

>>> df2 
0   0   1   2 
0 0.040158  NaN  NaN 
1  NaN  NaN 0.500642 
2 0.005694  NaN  NaN 
3  NaN 0.065052  NaN 
4 0.034789  NaN  NaN 
5  NaN  NaN 0.128495 
6  NaN 0.088816  NaN 
7  NaN 0.056725  NaN 
8 -0.000193  NaN  NaN 
9  NaN  NaN -0.070252 
10  NaN  NaN 0.138282 
11  NaN  NaN 0.054638 
12  NaN  NaN 0.039994 
13  NaN  NaN 0.060659 
14 0.038562  NaN  NaN 

df2.boxplot() 

boxplot

20

Trong 0.16.0 phiên bản của gấu trúc, bạn chỉ có thể làm điều này:

df.boxplot(by='0') 

Kết quả:

enter image description here

+0

quy mô của trục y là gì? Nó không tương ứng với dữ liệu. – Alexander

+0

@Alexander Oh, đó. Tôi đã thay đổi dữ liệu trên tệp cục bộ. Đã cập nhật nó ngay bây giờ. – fixxxer

+0

Đây là tài liệu cho 'by' cluase, http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas.DataFrame.boxplot.html. Ví dụ: ô (ô) có thể được nhóm theo nhiều cột. – xpt

Các vấn đề liên quan