按年份划分的多列箱线图
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)
的东西,然后使用双循环
我正在尝试通过列 = '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)
的东西,然后使用双循环