来自Pandas Dataframe的Seaborn Violin Plot,每一列都有自己独立的小提琴情节

时间:2017-09-09 18:57:42

标签: pandas seaborn

我有Pandas Dataframe结构:

   A  B
0  1  1
1  2  1
2  3  4
3  3  7
4  6  8

如何生成Seaborn Violin图,每列作为独立的小提琴图进行并排比较?

2 个答案:

答案 0 :(得分:5)

您可以先按melt对列中的群组重新整形,然后seaborn.violinplot

#old version of pandas
#df = pd.melt(df, var_name='groups', value_name='vals')
df = df.melt(var_name='groups', value_name='vals')
print (df)
  groups  vals
0      A     1
1      A     2
2      A     3
3      A     3
4      A     6
5      B     1
6      B     1
7      B     4
8      B     7
9      B     8

ax = sns.violinplot(x="groups", y="vals", data=df)

graph

答案 1 :(得分:2)

seaborn(至少版本0.8.1;不确定这是否是新的)支持您想要的内容而不会弄乱您的数据框架:

import pandas as pd
import seaborn as sns
df = pd.DataFrame({'A': [1, 2, 3, 3, 6], 'B': [1, 1, 4, 7, 8]})
sns.violinplot(data=df)

violin plot

(请注意,您确实需要设置data=df;如果您只是传入df作为第一个参数(相当于在函数调用中设置x=df),它似乎就好了将列连接在一起,然后制作所有数据的小提琴图)