让Seaborn swarmplot以正确的格式获取Pandas Dataframe

时间:2016-05-06 09:56:45

标签: python pandas seaborn

我有一个CSV文件中的数据,我想在Swarmplot中绘制,如第4个例子https://stanford.edu/~mwaskom/software/seaborn/tutorial/categorical.html - 即用颜色表示组。

在CSV文件中,数据按行排列:

Group,1,1,2,2
Value1,0.5,0.3,0.2,0.1
Value2,1.7,1.3,1.1,1.0
...

我希望swarmplot上的颜色由集团决定,并且每个值都有一个单独的图。

我到目前为止:

import pandas as pns
import seaborn as sns
data_in = pns.read_cvs('file.csv',header=None,index_col=0)
data_t = data_in.transpose()

此时我的数据框架如下:

0 Group Value1 Value2 ...
1     1    0.5    1.7
2     1    0.3    1.3
3     2    0.2    1.1
4     2    0.1    1.0

如果我那么做

k = data_t.keys()[[2,3]]
sns.swarmplot(data_t[k])

我可以拉出我想要的列,并得到一个除了颜色外看起来很好的情节。我的问题是,为了使用hue关键字参数指定颜色,我必须指定' x'或者' y'争论也是如此。我无法弄清楚如何将我的数据框操作为可以指定其中任何一个变量的格式。我想想得到这样的东西:

0 Group   Name Value
1     1 Value1   0.5
2     2 Value1   0.3
3     1 Value2   0.2
4     2 Value2   0.1

...

但是如果我想要堆叠(),使用pivot_table或其他东西,我就无法解决。

提前致谢。

1 个答案:

答案 0 :(得分:2)

要转换表格,您可以使用melt

pd.melt(df,id_vars='Group',value_vars=['Value1','Value2'])

Group variable  value
0      1   Value1    0.5
1      1   Value1    0.3
2      2   Value1    0.2
3      2   Value1    0.1
4      1   Value2    1.7
5      1   Value2    1.3
6      2   Value2    1.1
7      2   Value2    1.0