大Pandas多指标数据的多重箱线图

2024-04-20 12:29:58 发布

您现在位置:Python中文网/ 问答频道 /正文

多索引结构数据如下:

                    0      1
method metric
HASH   L2_TCM     287    296
       TOT_CYC   6211   6100
RECV   L2_TCM     331    323
       TOT_CYC  10881   7524
SYNTH  L2_TCM     869    856
       TOT_CYC  29117  29560

列0和1表示每个方法度量对的样本。我已经展示了两个样本以供说明,但可能不止两个。在

理想情况下,我希望使用pandas来创建一组图,每个图对应一个方法,每个方法包含一个使用示例的每个度量的盒线图。这听起来应该很简单,但我正在努力让分组正确工作。在

任何关于如何绘制此图或重新配置数据帧以简化绘图的建议将不胜感激。在

提前感谢您的帮助!在

我曾尝试使用df.boxplot(by='method')作为起点,但以KeyError失败。基于this问题,我注意到.boxplot似乎期望数据列,而不是行。我同样尝试过使用df.T.boxplot(by='method'),但没有用。在

编辑:添加了我目前所做的努力。在


Tags: 数据方法dfby度量hashcyc结构
1条回答
网友
1楼 · 发布于 2024-04-20 12:29:58

这就是你要找的吗?在

import pandas as pd
import seaborn as sns

'''
method metric       0      1
HASH   L2_TCM     287    296
HASH   TOT_CYC   6211   6100
RECV   L2_TCM     331    323
RECV   TOT_CYC  10881   7524
SYNTH  L2_TCM     869    856
SYNTH  TOT_CYC  29117  29560
'''

df = pd.read_clipboard()

# this is what your data looks like...
df.groupby([
    'method',
    'metric'
]).agg({
    '0' : 'max',
    '1' : 'max'
})

# I reshaped it to have no multiindex...


# And then melt the data to work with seaborn
df1 = df.melt(id_vars = [
    'method',
    'metric'
])

sns.boxplot(data = df1, x = 'method', y = 'value', hue = 'metric');

final

相关问题 更多 >