web-dev-qa-db-ja.com

海生まれの箱ひげ図のx軸の注文

私のデータフレームround_dataは次のようになります:

      error                         username                    task_path
0      0.02  n49vq14uhvy93i5uw33tf7s1ei07vngozrzlsr6q6cnh8w...    39.png
1      0.10  n49vq14uhvy93i5uw33tf7s1ei07vngozrzlsr6q6cnh8w...    45.png
2      0.15  n49vq14uhvy93i5uw33tf7s1ei07vngozrzlsr6q6cnh8w...    44.png
3     0.25  xdoaztndsxoxk3wycpxxkhaiew3lrsou3eafx3em58uqth...    43.png
...     ...                                                ...       ...
1170  -0.11  9qrz4829q27cu3pskups0vir0ftepql7ynpn6in9hxx3ux...    33.png
1171   0.15  9qrz4829q27cu3pskups0vir0ftepql7ynpn6in9hxx3ux...    34.png


[1198 rows x 3 columns]

各ユーザーのエラーを平均パフォーマンスでソートした箱ひげ図が必要です。私が持っているものは:

    ax = sns.boxplot(x="username", y="error", data=round_data,
                 whis=np.inf, color="c",ax=ax)

これはこのプロットになります: boxplot

平均誤差でx軸(つまり、ユーザー)を並べ替えるにはどうすればよいですか?

7
amaatouq

わかりました、私は答えを理解しました:

    grouped = round_data[round_data.batch==i].groupby("username")
users_sorted_average = pd.DataFrame({col:vals['absolute_error'] for col,vals in grouped}).mean().sort_values(ascending=True)   

渡すusers_sorted_averageseabornプロット関数の "order"パラメーターは、目的の動作を提供します。

    ax = sns.boxplot(x="username", y="error", data=round_data,
                 whis=np.inf,ax=ax,color=c,order=users_sorted_average.index)

enter image description here

12
amaatouq