Pandas:计算每日数据的气候异常

wn9m85ua  于 2023-05-15  发布在  其他
关注(0)|答案(1)|浏览(133)

我有一个每日数据的pandas dataframe,如下所示:

gpi_data['sig']
Out[34]: 
2007-01-02   -8.963545
2007-01-03   -8.671357
2007-01-03   -8.996480
2007-01-04   -8.835958
2007-01-05   -8.785034
  
2019-12-28   -8.328209
2019-12-29   -8.380242
2019-12-30   -8.532246
2019-12-30   -8.532573
2019-12-31   -8.345356
Name: sig, Length: 6368, dtype: float32

然后我想计算变量sig的气候异常。例如,对于2007-01-02中的数据,我需要计算DOY(一年中的第几天)01-0220072008,...,2019年的mean值。假设平均值为X,则“气候异常”定义为-8.963545 - X。那我怎么做
我只知道我可以使用如下所示的gpi_data.groupby(gpi_data.index.dayofyear).mean()来计算每个DOY上的X值。
但是如何将gpi_data中的每个时间戳与DOY匹配呢?例如,将数据2007-01-02 -8.963545匹配到DOY 2 -8.693721?谢谢!
我想知道,如果我得到了一个模型预测的异常,比如gpi_data_predicted,我如何将异常添加到原始气候学中,以“反规范化”数据,从而获得最终结果?谢谢!

bxjv4tth

bxjv4tth1#

可以使用groupby.transform('mean')

gpi_data['sig'].sub(gpi_data.groupby(pd.to_datetime(gpi_data.index).dayofyear)
                    ['sig'].transform('mean'))

输出:

2007-01-02    0.000000
2007-01-03    0.162561
2007-01-03   -0.162562
2007-01-04    0.000000
2007-01-05    0.000000
2019-12-28    0.000000
2019-12-29    0.000000
2019-12-30    0.000163
2019-12-30   -0.000163
2019-12-31    0.000000
Name: sig, dtype: float64

相关问题