提问者:小点点

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


我将如何使用熊猫来计算与月平均降雨量值的累积偏差?

我得到了每日降雨量数据(例如下面的s),我可以将其转换为pd. Series并重新取样为月度周期(sum;例如下面的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个答案

匿名用户

这与文档中的一个示例密切相关。这是未经测试的代码,但您需要如下内容:

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

把所有的一月放在一起(每个月依此类推):

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

然后呢

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