我有这种形式的数据框:
value identifier
2007-01-01 0.781611 55
2007-01-01 0.766152 56
2007-01-01 0.766152 57
2007-02-01 0.705615 55
2007-02-01 0.032134 56
2007-02-01 0.032134 57
2008-01-01 0.026512 55
2008-01-01 0.993124 56
2008-01-01 0.993124 57
2008-02-01 0.226420 55
2008-02-01 0.033860 56
2008-02-01 0.033860 57
我可以使用此答案按标识符将数据分组。
by_date = df.groupby(df.index.date)['value'].mean()
2007-01-01 0.771305
2007-02-01 0.256628
2008-01-01 0.670920
2008-02-01 0.098047
现在,我想按月进行箱线图绘制,因此我可以想象可以对它进行分组:
new_df = pd.DataFrame()
new_df['value'] = by_date
by_month = by_date.groupby(by_date.index.month)
aa = by_month.groupby(lambda x: x.month)
aa.boxplot(subplots=False)
如何在没有虚拟数据框的情况下创建此箱线图?
为了使groupby返回df而不是Series,请使用double替换[[]]
:
by_date = df.groupby(df.index.date)[['value']].mean()
然后,您可以按月分组并生成箱线图:
by_month = by_date.groupby(by_date.index.month)
by_month.boxplot(subplots=False)
使用双减法是一个微妙的功能,这种功能并不立即显而易见,通常这样做df[col]
会返回一个列,但是我们知道传递一个列的列表col_list
会返回一个df:df[col_list]
在展开时,它与df[[col_a, col_b]]
此相同,因此得出以下结论:如果执行以下操作,则可以返回df:df[[col_a]]
由于我们传递了包含单个元素的列表,因此这与df[col_a]
传递标签以执行列索引的位置不同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句