私はおそらく明白な何かを考えていないように感じます。同じ図、つまりデータフレームのすべての列のボックスプロットを配置します。x軸には列の名前があります。 seaborn.boxplot()
では、これはすべての列でgroupby
と等しくなります。
In pandas私がやる
df = pd.DataFrame(data = np.random.random(size=(4,4)), columns = ['A','B','C','D'])
df.boxplot()
もたらす
今、私はシーボーンで同じことを取得したいと思います。しかし、sns.boxplot(df)を試してみると、グループ化された箱ひげ図が1つしか得られません。シーボーンで同じ図をどのように再現しますか?
ありがとう
シーボーンの同等物
df.boxplot()
は
sns.boxplot(x="variable", y="value", data=pd.melt(df))
完全な例:
import numpy as np; np.random.seed(42)
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(data = np.random.random(size=(4,4)), columns = ['A','B','C','D'])
sns.boxplot(x="variable", y="value", data=pd.melt(df))
plt.show()
これは pd.melt
ワイドフォームデータフレームを変換します
A B C D
0 0.374540 0.950714 0.731994 0.598658
1 0.156019 0.155995 0.058084 0.866176
2 0.601115 0.708073 0.020584 0.969910
3 0.832443 0.212339 0.181825 0.183405
ロングフォームへ
variable value
0 A 0.374540
1 A 0.156019
2 A 0.601115
3 A 0.832443
4 B 0.950714
5 B 0.155995
6 B 0.708073
7 B 0.212339
8 C 0.731994
9 C 0.058084
10 C 0.020584
11 C 0.181825
12 D 0.598658
13 D 0.866176
14 D 0.969910
15 D 0.183405
組み込みのpandasメソッド df.plot(kind = 'box')この質問 で提案されているように使用できます。
Seabornを使用するhaveの場合、この答えは役に立たないことを理解していますが、よりシンプルな要件を持つ人々には役立つかもしれません。
import numpy as np; np.random.seed(42)
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(data = np.random.random(size=(4,4)), columns = ['A','B','C','D'])
df.plot(kind='box')
plt.show()