gpt4 book ai didi

python - 如何获取特定时间范围的平均值

转载 作者:行者123 更新时间:2023-12-01 05:56:54 28 4
gpt4 key购买 nike

我两周前开始学习,现在我有点陷入困境。我有 2 个 TimeSeries,如下所示:

2011-01-09 00:00:00+00:00    7.430126
2011-01-09 01:00:00+00:00 6.793855
2011-01-09 02:00:00+00:00 6.675949
2011-01-09 03:00:00+00:00 6.756636
2011-01-09 04:00:00+00:00 6.875174
2011-01-09 05:00:00+00:00 5.432611
2011-01-09 06:00:00+00:00 6.059197
2011-01-09 21:00:00+00:00 5.338928
2011-01-09 22:00:00+00:00 5.259672
2011-01-09 23:00:00+00:00 5.247196
2011-01-10 00:00:00+00:00 5.889274
2011-01-10 01:00:00+00:00 6.133871
2011-01-10 02:00:00+00:00 6.111958
2011-01-10 03:00:00+00:00 5.873732
2011-01-10 04:00:00+00:00 5.627684
2011-01-10 05:00:00+00:00 5.265644
2011-01-10 06:00:00+00:00 5.505559
2011-01-10 21:00:00+00:00 3.835050
2011-01-10 22:00:00+00:00 3.879653
2011-01-10 23:00:00+00:00 4.034543
2011-01-11 00:00:00+00:00 4.844272
2011-01-11 01:00:00+00:00 4.670967
2011-01-11 02:00:00+00:00 4.584164
2011-01-11 03:00:00+00:00 4.786821

这是风速测量数据,我想将其与模型数据进行比较。更具体地说,我想比较夜间(21.00 - 6.00)的风速。所以我定义了一个函数:

def func(model, measure):
return (model-measure).mean()

此外,我在数据上创建了一个循环:

mean_night = []
start = 7
for a in night:
mean_night.append(func(model, measure[start:(start+10)]))
start = start+11
if start>5378:
break

问题是我丢失了时间索引并且丢失了一些数据(例如 1 天或 1 周),因此我在使用 DateRange 重新索引它时遇到了麻烦。最后,它应该看起来像这样:

date    difference_means
2011-01-09 diff_1
2011-01-09 diff_2

等等。我使用 Pandas 0.7.1。感谢你的支持! (抱歉我的英语不好:P)

最佳答案

Pandas 0.8.1对于每小时采样的数据:

In [57]: import pandas

In [58]: import numpy

In [59]: index = pandas.date_range(start='2011-01-09', periods=240, freq='H')

In [60]: s = pandas.Series(np.random.randn(len(index)), index)

In [61]: s_night = s[(s.index.hour >= 21) | (s.index.hour <= 6)]

In [62]: def day_or_night(dates):
....: r = []
....: for date in dates:
....: if (date.hour >= 21) | (date.hour <= 6):
....: d = datetime.datetime(date.year, date.month, date.day)
....: if (date.hour <= 6):
....: d = d - pandas.offsets.Day()
....: r.append(d)
....: else:
....: r.append('day')
....: return r
....:

In [63]: s_night.groupby(day_or_night(s_night.index)).mean()
Out[63]:
2011-01-08 0.652095
2011-01-09 0.004129
2011-01-10 0.457892
2011-01-11 -0.078547
2011-01-12 0.008087
2011-01-13 0.043568
2011-01-14 0.505970
2011-01-15 0.150971
2011-01-16 0.107265
2011-01-17 0.117811
2011-01-18 -0.191193

关于python - 如何获取特定时间范围的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12041519/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com