按年份划分的多列箱线图

Boxplot with Multiple Columns by Months of Year

我正在尝试通过列 = 'Var' 和 = 'plant_name' 从我的数据框 (df3) 创建 12 个熊猫 df 的箱线图。我需要为每年 1 月至 12 月的 12 个月中的每个月创建 'Var' 和 by = 'plant_name" 的箱线图。我在下面的代码中绘制了 12 个图 - 每个图一个我的月份列表中的月份 =['Jan','Feb','Mar',...'Dec']。但是,我的代码将所有月份数据绘制在同一个箱线图中来自 df3.

中 'Var' 列的 12 次而不是 12 个独特月份的数据

我的代码:

months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nove','Dec']
for column in months:
    plt.figure()
    df3.boxplot(by='plant_name',column='Var')
    plt.xticks(rotation=90, ha='right')

df3.head(5)
Out[32]: 
  plant_name  month  year     power_kwh  power_kwh_rhs   Var
0  BII NEE STIPA      1  1991  11905.826075   14673.281223 -18.9
1  BII NEE STIPA      1  1992  14273.927688   14673.281223  -2.7
2  BII NEE STIPA      1  1993  12559.828360   14673.281223 -14.4
3  BII NEE STIPA      1  1994  14627.635081   14673.281223  -0.3
4  BII NEE STIPA      1  1995  13715.054435   14673.281223  -6.5

和df3结束-

Out[33]: 
plant_name  month  year     power_kwh  power_kwh_rhs   Var
2875    VENTOSA     12  2016  45840.068414   48876.289265  -6.2
2876    VENTOSA     12  2017  59288.158871   48876.289265  21.3
2877    VENTOSA     12  2018  44438.768683   48876.289265  -9.1
2878    VENTOSA     12  2019  47002.390188   48876.289265  -3.8
2879    VENTOSA     12  2020  52101.279839   48876.289265   6.6

试试:

months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nove','Dec']
for i, month in enumerate(months,1):
    plt.figure()
    df3[df3['month']==i].boxplot(by='plant_name',column='Var')
    plt.xticks(rotation=90, ha='right')

试试这个:

fig, ax = plt.subplots(len(months))
for i, month in enumerate(months):
    df3[df3['month']==i].boxplot(by='plant_name',column='Var', ax=ax[i])
    ax.xticks(rotation=90, ha='right')

如果你想要一个“二维”的箱形图数组,那么使用类似 fig, ax = plt.subplots(4,3) 的东西,然后使用双循环