2016-05-06 62 views
1

我有一個CSV文件中的數據,我想在Swarmplot中繪製如第4個示例https://stanford.edu/~mwaskom/software/seaborn/tutorial/categorical.html - 即顏色表示組。以正確的格式獲取Pandas數據幀,用於Seaborn swarmplot

在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或別的東西完全。

在此先感謝。

回答

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 
+1

太謝謝你了。 '熔化'完成了這項工作,我從未想過要尋找這樣的功能!在我的情況下,我只需要'pns.melt(data_t,id_vars ='Group') –

相關問題