来自Pandas数据框的多个箱线图

7

我将尝试使用Pandas数据框绘制一个包含多个箱线图的面板图。 数据框的列如下所示:

 data.columns 
 Index([u'SiteId', u'obs1', u'obs2', u'obs3', u'obs4', u'obs5', u'obs6', u'date', u'area']

我想创建一个包含9个不同地理区域的面板,每个地理区域有12个箱线图,分别代表一年中的每个月份。下面是一个示例,其中显示了用于创建图表的代码片段:

df = data.ix[:, ['obs1','date', 'area']]
df = df.set_index('date')
colm = ['LOCATION 1']
for area in areas:
   df2 = df.loc[(df.area== area)]
   df2.boxplot(column=colm, by=df2.index.month, showmeans=True)

以上代码的结果只产生一个图形(该图形对应于图中每个月的箱线图),但我想在同一图中创建9个这样的子图,每个子图对应于特定区域。换句话说,我想首先按地区分组数据,然后按年份的月份分组,最后将结果作为箱线图绘制出来。有什么想法可以得到所需的图形吗?任何帮助都将不胜感激。
此外,如何摆脱位于图的顶部和底部的“Boxplot grouped by [1 1 1 ...12 12 12]”和“1,1,1,1,1,1,1,1,1,.....”?
由于stackoverflow规则不允许我发布图片,因此无法提供示例。

如果您能提供一个带有虚假数据的简单数据框以供操作,那将非常有用。我怀疑您的9个数字确实是生成的,但每个数字都被下一个数字覆盖了。您可以尝试在for循环中创建一个新的数字,这样您应该可以得到9个不同的数字。如果您想在同一图中绘制所有9个区域,您应该创建一个9x12子图,并在for循环中在相关轴上绘制。 - Diziet Asahi
谢谢Diziet,我试过了但不起作用。以下是样本数据(虽然只有几天,但日期涵盖整个年份,而且有9个这样的区域): 日期 obs1 区域 2011-01-03 95.213458 4 2011-01-15 85.360990 5 2011-01-18 84.556772 5 2011-01-21 50.630212 6 2011-01-24 85.118985 3 2011-01-27 7.944901 1 2011-01-30 56.947048 3 2011-01-03 89.431410 6 2011-01-06 7.979408 6 - Vakratund
1个回答

4

这个功能是否能满足您的需求?

fig, axs = plt.subplots(len(areas), 1, figsize=(5,45))
for ax,area in zip(axs,areas):
    df2 = df.loc[(df.area==area)]
    df2.boxplot(column=['obs1'], by=df2.index.month, showmeans=True, ax=ax)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接