我以下列形式获得了一个聚合:
measure
mean
attribute dataset_name method
50 d111 m1 0.559120
m2 0.632573
m3 0.555867
m4 0.587053
m5 0.647413
d222 m1 0.759120
m2 0.632573
m3 0.655867
m4 0.584053
m5 0.647413
d333 m1 0.859120
m2 0.632573
m3 0.655867
m4 0.587053
m5 0.647413
我的目标是以下列方式绘制这些数据:
x axis = attribute
y axis = mean
hue = method
facet_wrap = dataset_name
我似乎无法使用pandas + seaborn库。我主要是将这个表格转换为融合版本,在数据集名称,方法和属性上进行了转移..
谢谢!
答案 0 :(得分:2)
添加到@jezrael的答案,这是为了绘图:
g = sns.FacetGrid(df, col='dataset_name', hue='method',size = 7, aspect = 1.0)
(g.map(plt.scatter, 'attribute','mean').set_titles("{col_name} Dataset").add_legend())
# output plot
答案 1 :(得分:1)
我认为需要选择列measure
以避免MultiIndex
,然后reset_index
:
print (df.reset_index().columns)
MultiIndex(levels=[['measure', 'method', 'dataset_name', 'attribute'], ['mean', '']],
labels=[[3, 2, 1, 0], [1, 1, 1, 0]])
df1 = df['measure'].reset_index()
print (df1)
attribute dataset_name method mean
0 50 d111 m1 0.559120
1 50 d111 m2 0.632573
2 50 d111 m3 0.555867
3 50 d111 m4 0.587053
4 50 d111 m5 0.647413
5 50 d222 m1 0.759120
6 50 d222 m2 0.632573
7 50 d222 m3 0.655867
8 50 d222 m4 0.584053
9 50 d222 m5 0.647413
10 50 d333 m1 0.859120
11 50 d333 m2 0.632573
12 50 d333 m3 0.655867
13 50 d333 m4 0.587053
14 50 d333 m5 0.647413
print (df1.columns)
Index(['attribute', 'dataset_name', 'method', 'mean'], dtype='object')
并使用情节Manish Saraswat' answer
。
答案 2 :(得分:0)
我设法通过简单地解决这个问题:
df_new = df.reset_index()
如果有更优雅的方式,我会很高兴知道。