Groupby 两列和条形图第三列 pandas

Tal*_*war 1 python matplotlib pandas

我有一个数据框如下,我想通过对模型和调度程序列进行分组来绘制多个条形图。例如第一个多条属于 ecaresnet50t 三个不同的调度程序并代表 mae 分数。第二个三个多重条代表resnest50d调度器的mae等等

         model     scheduler    mae
0   ecaresnet50t      warm      4.518
1   ecaresnet50t      cosine    4.46
2   ecaresnet50t      constant  4.972
3   resnest50d        warm      4.056
4   resnest50d        cosine    4.1
5   resnest50d        constant  5.072
6   resnetrs50        warm      4.164
7   resnetrs50        cosine    4.154
8   resnetrs50        constant  4.644
9   seresnet50        warm      4.202
Run Code Online (Sandbox Code Playgroud)

我尝试过类似的事情 (df.groupby(['model','scheduler'])['mae'].plot.bar()) 但它不起作用

小智 5

使用数据透视表。它们就是您正在寻找的东西,并且在这种情况下比多索引 groupby 更容易使用。

df_pivot = pd.pivot_table(df, 
                          values="mae", 
                          index="model", 
                          columns="scheduler", 
                          aggfunc=np.mean)

df_pivot.plot.bar()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述