将 Python 脚本应用于时间序列,一次以 30 天为单位



我有一个脚本,可以一次性应用于大型时间序列数据集,但我想看看结果是否随时间而发生细微变化,所以我需要将我的时间序列划分为 30 天的窗口,并在整个时间段内为每个 30 天的块运行脚本。我的数据示例如下所示,每天 24 个点:

Date & time          B        C         S1      S2      S3
20/10/2015 00:00    1024.7  228.566111  2.672   2.742   4.508
20/10/2015 01:00    1024.5  65.740034   2.683   2.7535  4.509
20/10/2015 02:00    1024.6  -91.845869  2.6925  2.763   4.509
20/10/2015 03:00    1024.5  -222.368074 2.664   2.764   4.512
20/10/2015 04:00    1024.8  -306.697572 2.6615  2.763   4.5135

Python的新手,我已经搜索了这个网站,熊猫文档,YouTube视频和一些教程,但没有运气。我以为这是滚动函数,但发现这仅适用于平均当月的数据(我想将脚本应用于整个月(。然后,我尝试使用以下方法按时间戳对数据进行子采样:

file.Timestamp = pd.to_datetime(file.Date_time,format='%d-%m-%Y %H:%M') 
file.index = file.Timestamp 

但这只会给我带来错误,就像:

monthy = file.resample('M')

原因是我对Python了解不多,所以我不知道我在寻找什么功能。任何人都可以帮助我或指出我需要研究什么功能的正确方向吗?我愿意做研究,只是不知道要搜索什么,并且已经没有想法了。到目前为止,搜索包括重采样、子采样、窗口、滚动、时间范围、部分和选择。

您可以使用 normal for 循环轻松完成此操作。
我假设您在代码中对此数据使用数据帧。

#sample file
df = pd.read_excel('yourfile.xlsx')
#lets say your function name is myfunct(dataframe)
r = int(df.shape[0]/(30*24))
for i in range(r):
temp = df.iloc[i:i+30*24,:]
myfunct(temp)
#for remaing data that at the end
temp = df.iloc[r*30*24:,:]
myfunct(temp)

这应该可以正常工作。 让我知道代码中是否有歧义

最新更新