我在多索引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 的多索引数据的多个箱线图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49722225/