【发布时间】:2014-01-14 23:44:01
【问题描述】:
如何使用 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”中的每个月值都减去所有相似月份的平均值,然后创建该系列的累积总和。我猜这可能是一步。
我怎样才能有效地做到这一点?
谢谢
【问题讨论】:
-
你能用一些数据和你尝试的方法展示一些示例代码吗?
-
当你用总和和平均值重新采样时..
-
我认为@DanAllan 的答案对你想要的是正确的。试试
sm.groupby(sm.index.month).transform(lambda x: x - x.mean()).cumsum().plot()。它将减去该组中每个值的所有相似月份的平均值,然后按照您的要求获取它的累积总和。 -
太棒了。是的,这行得通。我只需要找出原因!感谢这两个答案。