【发布时间】:2021-12-16 02:34:55
【问题描述】:
问题:
我有一个不规则间隔的时间序列数据集,我想计算每个固定时间间隔的平均值。
在 Python 中执行此操作的最佳方法是什么?
示例:
下面是作为 Pandas 系列的简化数据集:
base = pd.to_datetime('2021-01-01 12:00')
mydict = {
base: 5,
base + timedelta(minutes=5): 10,
base + timedelta(minutes=7): 12,
base + timedelta(minutes=12): 6,
base + timedelta(minutes=25): 8
}
series = pd.Series(mydict)
返回:
2021-01-01 12:00:00 5
2021-01-01 12:05:00 10
2021-01-01 12:07:00 12
2021-01-01 12:12:00 6
2021-01-01 12:25:00 8
我的解决方案:
我想将其重新采样为 15 分钟的常规间隔并取平均值。我可以通过首先重新采样到一个非常小的间隔(秒)然后重新采样到 15 分钟来做到这一点:
series.resample('S').ffill().resample('15T').mean()
返回:
2021-01-01 12:00:00 8.200000
2021-01-01 12:15:00 6.003328
在采样到所需的间隔之前先重新采样到一个小的间隔并不像 Python 那样。而且我预计对于需要高精度的大型数据集,它也会变得很慢。 有更好的方法吗?
P.S.如果您想知道:如果您立即重新采样到 15 分钟,您不会得到想要的结果:
series.resample('15T').mean()
返回:
2021-01-01 12:00:00 8.25
2021-01-01 12:15:00 8.00
【问题讨论】:
-
在您的示例中,第一行是否暗示从
2021-01-01 12:00:00到2021-01-01 12:05:00的值是 5,从2021-01-01 12:05:00到2021-01-01 12:07:00等的值是 10,即您的数据描述时刻时间还是间隔? -
是的,你是对的,所以它是在描述区间。
标签: python pandas datetime time-series timedelta