计算熊猫系列中每月平均值的累积偏差

时间:2013-12-27 11:16:39

标签: python pandas series

我如何使用pandas计算月平均降雨量值的累积偏差?

我每天都会收到雨量数据(例如下面的s),我可以将其转换为pd.Series并重新采样为月度周期(总和;例如下面的sm)。但我想计算每月月值与月份平均值之间的差异。我添加了一个合成示例:

rng = pd.period_range(20010101, 20131231, freq='D')
s = pd.Series(np.random.normal(2.5,2,size=len(rng)), index=rng)
sm = s.resample('M', how='sum')

例如,对于2010年1月,我想计算该月的价值与1月份(长期)的平均月降雨量之间的差异。然后我想要这个差异的累积总和。

我尝试使用groupby函数:

sm.groupby(lambda x: x.month).mean()

但不成功。我希望'sm'中的每个月值都能减去所有相似月份的平均值,然后创建该系列的累积总和。我想这可能是一步到位。

我怎样才能有效地实现这一目标?
感谢

1 个答案:

答案 0 :(得分:3)

这与an example in the docs密切相关。这是未经测试的代码,但你想要这样的东西:

monthly_rainfall = daily_rainfall.resample('D', how=np.sum)

将所有年份的所有Januarys组合在一起(以及每个月等):

grouped = monthly_rainfall.groupby(lambda x: x.month)

然后

deviation = grouped.transform(lambda x: x - x.mean())
deviation.cumsum()