【问题标题】:Plotting pandas aggregated objects绘制 pandas 聚合对象
【发布时间】:2018-03-02 09:07:37
【问题描述】:

我获得了以下形式的聚合:

                                                        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 库一起使用。我主要是在将这张表转换为融合版本时遇到问题,以 dataset_name、方法和属性为中心。..

谢谢!

【问题讨论】:

  • 请向我们展示您的代码!

标签: python pandas seaborn


【解决方案1】:

添加到@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

【讨论】:

  • 谢谢,我用比较笨拙的方式解决了,太好了!
【解决方案2】:

我认为需要选择列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

【讨论】:

【解决方案3】:

我设法通过简单地解决了这个问题:

df_new = df.reset_index()

如果有任何更优雅的方式我会很高兴知道。

【讨论】:

  • 列中没有Multiindex? print (df.columns) 是什么?
  • 是的,这是一个多索引
猜你喜欢
  • 2016-07-21
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
  • 1970-01-01
  • 2010-10-22
  • 2021-12-21
  • 2018-11-09
相关资源
最近更新 更多