我如何使用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'中的每个月值都能减去所有相似月份的平均值,然后创建该系列的累积总和。我想这可能是一步到位。
我怎样才能有效地实现这一目标?
感谢
答案 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()