按月份划分的多列箱线图

2024-06-02 08:43:17 发布

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

我正试图从我的数据帧(df3)中创建12个panda df的箱线图,其列='Var'和by='plant_name'。我需要为一年1月至12月的12个月中的每一个月的“Var”列和by=“plant_name”列创建一个箱线图。下面的代码绘制了12个图,从我的月列表中每月绘制一个图=['Jan'、'Feb'、'Mar'、…'Dec']。但是,我的代码将所有月份数据绘制在同一个箱线图中12次,而不是df3中“Var”列中的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

Tags: 数据代码namebyvar绘制kwhpower
2条回答

尝试:

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

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

相关问题 更多 >