首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对时间序列进行重采样

对时间序列进行重采样
EN

Stack Overflow用户
提问于 2021-04-29 21:14:36
回答 1查看 66关注 0票数 0

我有一个40年的时间序列,格式为stn;yyyymmddhh;rainfall,其中yyyy= year,mm = month,dd= dd=,hh= hour。该系列的分辨率为每小时一次。我通过下面的groupby方法提取了每年的最大值:

代码语言:javascript
复制
import pandas as pd
df = pd.read_csv('data.txt', delimiter = ";")
df['yyyy'] = df['yyyymmhhdd'].astype(str).str[:4]
df.groupby(['yyyy'])['rainfall'].max().reset_index()

现在,我正在尝试提取每年3小时持续时间的最大值。我尝试了这种滑动最大值方法,但它不起作用。K是我感兴趣的持续时间。简而言之,我需要在每年的多个持续时间(如3h,6h等)的最大降水量和。

代码语言:javascript
复制
class AMS:
    def sliding_max(self, k, data):
        tp = data.values
        period = 24*365
        agg_values = []
        start_j = 1
        end_j = k*int(np.floor(period/k))
        for j in range(start_j, end_j + 1):
            start_i = j - 1
            end_i = j + k + 1
            agg_values.append(np.nansum(tp[start_i:end_i]))
        self.sliding_max = max(agg_values)
        return self.sliding_max

在我的代码中有任何建议或改进,或者有什么方法可以用groupby实现它。我对python环境还是个新手,所以如果这个问题没有被正确地提出,请原谅。

代码语言:javascript
复制
Stn;yyyymmddhh;rainfall 
xyz;1981010100;0.0
xyz;1981010101;0.0
xyz;1981010102;0.0
xyz;1981010103;0.0
xyz;1981010104;0.0
xyz;1981010105;0.0
xyz;1981010106;0.0
xyz;1981010107;0.0
xyz;1981010108;0.0
xyz;1981010109;0.4
xyz;1981010110;0.6
xyz;1981010111;0.1
xyz;1981010112;0.1
xyz;1981010113;0.0
xyz;1981010114;0.1
xyz;1981010115;0.6
xyz;1981010116;0.0
xyz;1981010117;0.0
xyz;1981010118;0.2
xyz;1981010119;0.0
xyz;1981010120;0.0
xyz;1981010121;0.0
xyz;1981010122;0.0
xyz;1981010123;0.0
xyz;1981010200;0.0
EN

回答 1

Stack Overflow用户

发布于 2021-04-30 02:44:52

首先必须将包含日期时间的列转换为datetime类型的Series。您可以通过提供日期时间的格式来进行解析。

代码语言:javascript
复制
df["yyyymmddhh"] = pd.to_datetime(df["yyyymmddhh"], format="%Y%M%d%H")

拥有正确的数据类型后,必须将该列设置为索引,现在可以对时间序列数据使用pandas功能(在本例中为重采样)。

首先,将数据重新采样到3小时窗口,并对这些值求和。在此基础上,对每年的数据进行重新采样,并取每年所有3小时窗口的最大值。

代码语言:javascript
复制
df.set_index("yyyymmddhh").resample("3H").sum().resample("Y").max()

# Output
yyyymmddhh  rainfall 
1981-12-31  1.1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67318147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档