首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中计算指数移动平均值

在python中计算指数移动平均值
EN

Stack Overflow用户
提问于 2009-01-29 02:01:45
回答 13查看 77.6K关注 0票数 30

我有一个日期范围和每个日期的度量值。我想计算每个日期的指数移动平均值。有人知道怎么做吗?

我是python的新手。标准的python库中似乎并没有内置平均值,这让我觉得有点奇怪。也许我找错地方了。

那么,给定以下代码,我如何计算日历日期的IQ点的移动加权平均值?

代码语言:javascript
复制
from datetime import date
days = [date(2008,1,1), date(2008,1,2), date(2008,1,7)]
IQ = [110, 105, 90]

(可能有一种更好的方法来组织数据,任何建议都将不胜感激)

EN

回答 13

Stack Overflow用户

发布于 2009-01-28 18:12:07

我用谷歌搜索了一下,找到了以下示例代码(http://osdir.com/ml/python.matplotlib.general/2005-04/msg00044.html):

代码语言:javascript
复制
def ema(s, n):
    """
    returns an n period exponential moving average for
    the time series s

    s is a list ordered from oldest (index 0) to most
    recent (index -1)
    n is an integer

    returns a numeric array of the exponential
    moving average
    """
    s = array(s)
    ema = []
    j = 1

    #get n sma first and calculate the next n period ema
    sma = sum(s[:n]) / n
    multiplier = 2 / float(1 + n)
    ema.append(sma)

    #EMA(current) = ( (Price(current) - EMA(prev) ) x Multiplier) + EMA(prev)
    ema.append(( (s[n] - sma) * multiplier) + sma)

    #now calculate the rest of the values
    for i in s[n+1:]:
        tmp = ( (i - ema[j]) * multiplier) + ema[j]
        j = j + 1
        ema.append(tmp)

    return ema
票数 14
EN

Stack Overflow用户

发布于 2015-10-04 20:42:55

我总是和熊猫一起计算EMAs:

下面是一个如何操作的示例:

代码语言:javascript
复制
import pandas as pd
import numpy as np

def ema(values, period):
    values = np.array(values)
    return pd.ewma(values, span=period)[-1]

values = [9, 5, 10, 16, 5]
period = 5

print ema(values, period)

更多关于Pandas EWMA的信息:

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.ewma.html

票数 12
EN

Stack Overflow用户

发布于 2009-01-28 18:10:09

我不知道Python,但对于平均部分,你是指指数衰减形式的低通滤波器吗

代码语言:javascript
复制
y_new = y_old + (input - y_old)*alpha

其中alpha = dt/ tau,dt =滤波器的时间步长,tau=滤波器的时间常数?(可变时间步长形式如下,只需裁剪dt/tau不大于1.0即可)

代码语言:javascript
复制
y_new = y_old + (input - y_old)*dt/tau

如果要过滤日期之类的内容,请确保将其转换为浮点数,如自1970年1月1日以来的秒数。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/488670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档