如何在pandas DataFrame中按月对行进行分组?

时间:2017-02-26 19:43:15

标签: python pandas dataframe boxplot

我需要创建一些定时数据的方框图,其中一个框表示每个月的原始数据。像这样:

enter image description here

现在让我们尝试使用pandas创建它:

matplotlib inline
import numpy as np
import pandas as pd

N_DAYS = 100
dates = pd.date_range('20130101', periods=N_DAYS)
df = pd.DataFrame(np.random.randn(N_DAYS,1), index=dates)

我可以按月重新抽样(代码M)并应用median等汇总函数:

df.resample('M').median()

但是,我无法创建数据的方框图:

df.resample('M').boxplot();

这会创建一个表示每个月平均值分布的框。

enter image description here

另外,我收到以下警告:

FutureWarning: 
.resample() is now a deferred operation
You called boxplot(...) on this deferred object which materialized it into a dataframe
by implicitly taking the mean.  Use .resample(...).mean() instead

如何为每个月创建原始数据的箱线图?

1 个答案:

答案 0 :(得分:4)

您似乎需要先使用period关键字参数为分层箱图创建by的新列,以创建分组:

df['per'] = df.index.to_period('M')
df.boxplot(by='per')

graph

您还可以查看docs