在中查找用户定义窗口的平均值

2024-04-19 18:59:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据帧,它有原始心率数据和时间索引(以秒为单位)。你知道吗

我正在尝试对数据进行分类,以便获得用户定义窗口的平均值(例如10秒)-不是滚动平均值,只是10秒的平均值,然后是10秒的后续值,等等

import pandas as pd

hr_raw = pd.read_csv('hr_data.csv', index_col='time')
print(hr_raw)

      heart_rate
time            
0.6        164.0
1.0        182.0
1.3        164.0
1.6        150.0
2.0        152.0
2.4        141.0
2.9        163.0
3.2        141.0
3.7        124.0
4.2        116.0
4.7        126.0
5.1        116.0
5.7        107.0

使用上面的示例数据,我希望能够设置一个用户定义的窗口大小(让我们使用2秒),并生成一个新的数据帧,该数据帧的索引为2秒增量,如果时间落在该窗口中,则平均“心率”值(应继续到数据帧的末尾)。你知道吗

例如:

      heart_rate
time            
2.0        162.40
4.0        142.25
6.0        116.25

我似乎只能找到基于预定数量的容器(例如,制作直方图)对数据进行分类的方法,而这只返回计数/频率。你知道吗

谢谢。你知道吗


Tags: csv数据用户raw定义ratetime时间
2条回答

正如coldspeed所指出的,4s会考虑2秒,但是,如果你需要2倍桶的话,你可以

In [1038]: df.groupby(np.ceil(df.index/2)*2).mean()
Out[1038]:
      heart_rate
time
2.0       162.40
4.0       142.25
6.0       116.25

应该由groupby来做。你知道吗

df.groupby((df.index // 2 + 1) * 2).mean()

      heart_rate
time            
2.0       165.00
4.0       144.20
6.0       116.25

请注意,我们的答案之间存在轻微差异的原因是排除了上限。也就是说,2.0秒的读数将被视为4.0秒的时间间隔。通常是这样做的,使用TimeGrouper的类似解决方案将产生相同的结果。你知道吗

相关问题 更多 >