gpt4 book ai didi

python - Rolling_mean 在特定时间段内使用 Pandas

转载 作者:行者123 更新时间:2023-12-05 06:43:07 24 4
gpt4 key购买 nike

TL;DR:是否有解决方案:

  • 实时向 DataFrame 添加数据(采样率非常数:每个新数据之间有时为 1 秒,有时为 0.2 秒,有时为 2 秒等)
  • 能够在固定的 5 秒窗口上计算 rolling_mean(无论此窗口中有 10 个或 100 个样本还是只有 2 个样本)

更准确地说:

import pandas as pd, time
df = pd.DataFrame(columns = ['x'])

for i in range(10):
df.ix[pd.datetime.now()] = {'x': 10 + i}
time.sleep(0.2) # here 0.2 seconds between each new data...

df.ix[pd.datetime.now()] = {'x': 20}
time.sleep(1) # here 1 second...
df.ix[pd.datetime.now()] = {'x': 21}
time.sleep(3) # here 3 seconds...
df.ix[pd.datetime.now()] = {'x': 22}

df 提供这个:

                          x
2016-01-08 13:57:10.679 10
2016-01-08 13:57:10.882 11
2016-01-08 13:57:11.085 12
2016-01-08 13:57:11.287 13
2016-01-08 13:57:11.489 14
2016-01-08 13:57:11.691 15
2016-01-08 13:57:11.893 16
2016-01-08 13:57:12.095 17
2016-01-08 13:57:12.297 18
2016-01-08 13:57:12.499 19
2016-01-08 13:57:12.701 20
2016-01-08 13:57:13.703 21
2016-01-08 13:57:16.706 22

这是 pd.rolling_mean(df, 5)

                          x
2016-01-08 13:57:10.679 NaN
2016-01-08 13:57:10.882 NaN
2016-01-08 13:57:11.085 NaN
2016-01-08 13:57:11.287 NaN
2016-01-08 13:57:11.489 12
2016-01-08 13:57:11.691 13
2016-01-08 13:57:11.893 14
2016-01-08 13:57:12.095 15
2016-01-08 13:57:12.297 16
2016-01-08 13:57:12.499 17
2016-01-08 13:57:12.701 18
2016-01-08 13:57:13.703 19
2016-01-08 13:57:16.706 20

当然 pd.rolling_mean(df, 5) 计算 5 行周期内的滚动平均值,这不是我想要的:我想要 5 秒的周期.

一个解决方案是 df.resample('1S', ...) 但是我想在每次添加新数据时计算一个新的 rolling_mean这意味着我应该每分钟多次.resample(...)整个DataFrame,这真的非常耗时,我认为这不是一个干净的解决方案。(在我的实际用例中,DataFrame 很大)。

对此有什么干净的解决方案?

最佳答案

当您添加新数据时,如何将滚动平均值存储在您的 df 中?

import datetime as dt
latest = pd.datetime.now()
five_secs = datetime.timedelta(seconds=5)
new_x=99
df.ix[latest] = {'x':new_x,
'five_second_mean':df[df.index > latest - five_secs].x.append(pd.Series(new_x).mean()}

关于python - Rolling_mean 在特定时间段内使用 Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34677734/

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