【问题标题】:Continuously calculating averages over past intervals w/ Pandas DataFrame使用 Pandas DataFrame 连续计算过去间隔的平均值
【发布时间】:2019-11-18 10:07:23
【问题描述】:

我相信我的问题非常简单,必须有一个非常简单的方法来解决这个问题,但是由于我对使用时间戳没有信心,所以我无法自己解决这个问题。

我制作了以下示例,它代表了我一直在研究的一个简单案例。在那里,您可以看到我已经制作了一个数据帧,其中包含一个一小时内的速度信号(这是一个输入)。

import pandas as pd
import numpy as np

start = pd.Timestamp('2019-11-15T16:00')
end = pd.Timestamp('2019-11-15T17:00')
t = np.linspace(start.value, end.value, 60*60+1)
data = pd.DataFrame([])
data['Timestamp'] = pd.to_datetime(t)

noise = np.random.normal(0,1,3601)
data['Speed'] = 10*abs(np.random.randn(3601))+noise

我将实现一个控制器,它将限制该速度信号,但这不在问题的范围内。所以我正在寻找一种方法,我可以循环遍历列for i,val in enumerate(data['Speed'].values): 并计算每个循环在过去 10 秒内的平均速度。所以这个想法是对于每次新的迭代,计算过去 10 个值的平均值。

希望我能做到简洁准确。我非常感谢您对此的帮助!也欢迎提出关于查找内容的建议。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.window.Rolling.mean.html#pandas.core.window.Rolling.mean

    data['Speed_10s_mean'] = data['Speed'].rolling(10).mean()
    

    结果

        Timestamp           Speed       Speed_10s_mean
    0   2019-11-15 16:00:00 6.467616    NaN
    1   2019-11-15 16:00:01 1.233462    NaN
    2   2019-11-15 16:00:02 9.136592    NaN
    3   2019-11-15 16:00:03 18.617069   NaN
    4   2019-11-15 16:00:04 7.628102    NaN
    5   2019-11-15 16:00:05 11.840941   NaN
    6   2019-11-15 16:00:06 7.788474    NaN
    7   2019-11-15 16:00:07 13.069130   NaN
    8   2019-11-15 16:00:08 5.549147    NaN
    9   2019-11-15 16:00:09 0.596765    8.192730
    10  2019-11-15 16:00:10 13.273170   8.873285
    11  2019-11-15 16:00:11 19.339124   10.683851
    12  2019-11-15 16:00:12 18.659298   11.636122
    13  2019-11-15 16:00:13 4.094160    10.183831
    14  2019-11-15 16:00:14 13.240686   10.745089
    15  2019-11-15 16:00:15 17.535431   11.314539
    16  2019-11-15 16:00:16 28.936041   13.429295
    17  2019-11-15 16:00:17 6.081373    12.730520
    18  2019-11-15 16:00:18 16.009562   13.776561
    19  2019-11-15 16:00:19 1.101115    13.826996
    ...
    

    【讨论】:

    • 感谢您的建议,但我想就我而言,这行不通。我的想法是计算何时循环最后 10 个先前值的平均值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 2019-08-26
    • 2016-10-24
    相关资源
    最近更新 更多