如何用Pandas计算日数据的气候态距平并实现反归一化?
Pandas计算气候态距平与反归一化实现
一、计算气候态距平
要实现每个时间戳对应DOY均值的匹配并计算距平,利用Pandas的map方法即可快速关联DOY与均值,步骤如下:
- 计算各年积日(DOY)的气候态均值:
# 按DOY分组计算sig列的均值,得到每个DOY的气候态基准 doy_mean = gpi_data.groupby(gpi_data.index.dayofyear)['sig'].mean()
- 为原始数据匹配对应DOY的均值并计算距平:
# 利用时间索引的dayofyear属性,映射到对应的DOY均值 gpi_data['doy_mean'] = gpi_data.index.dayofyear.map(doy_mean) # 计算距平:原始值减去对应DOY的气候态均值 gpi_data['sig_anomaly'] = gpi_data['sig'] - gpi_data['doy_mean']
比如2007-01-02的DOY是2,会自动匹配到doy_mean中值为-8.693721的条目,计算出距平为-8.963545 - (-8.693721)。
二、预测距平的反归一化
如果有模型输出的距平数据gpi_data_predicted,将其与对应DOY的气候态均值相加,即可还原为原始尺度的预测值:
- 为预测数据匹配对应DOY的均值:
# 同样通过时间索引的dayofyear映射气候态均值 gpi_data_predicted['doy_mean'] = gpi_data_predicted.index.dayofyear.map(doy_mean)
- 反归一化计算最终预测值:
# 距平值加上气候态均值,得到原始尺度的预测结果 gpi_data_predicted['sig_predicted'] = gpi_data_predicted['anomaly_predicted'] + gpi_data_predicted['doy_mean']
注:如果预测数据没有时间索引,而是直接存储了DOY列,只需将index.dayofyear替换为['doy']即可完成映射。
内容的提问来源于stack exchange,提问作者Xu Shan
相关产品推荐
相关产品推荐

