我在多索引DataFrame中的数据结构如下:

                    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表示每个方法度量对的样本。我出于说明目的显示了2个示例,但可能有两个以上。

理想情况下,我想使用熊猫创建一组图形,每种方法一个,其中包含使用样本的每个指标的箱线图。听起来应该很简单,但是我正在努力使分组正常工作。

任何有关如何对此进行绘图或重新配置DataFrame以简化绘图的建议将不胜感激。

预先感谢您的帮助!

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

编辑:添加了到目前为止我已经尝试过的内容。

最佳答案

这是您要找的东西吗?

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');


python - 来自 Pandas 的多索引数据的多个箱线图-LMLPHP

关于python - 来自 Pandas 的多索引数据的多个箱线图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49722225/

10-10 00:18
查看更多