2012-10-04 4 views
16

Je travaille sur des séries chronologiques en python. Les bibliothèques que j'ai trouvées utiles et prometteuses sontPackage pour l'analyse de séries chronologiques en python

  • pandas; Statsmodel (pour ARIMA)
  • Un simple lissage exponentiel est fourni par les pandas.

également pour la visualisation: matplotlib

Est-ce que quelqu'un sait une bibliothèque pour le lissage exponentiel?

+1

liés: [calculer la moyenne mobile exponentielle en python] (http://stackoverflow.com/questions/488670/calculate-exponentiel-moving-average-in-python) – jfs

Répondre

22

Pandas a pondérée exponentiellement Fonctions de moment émouvant

http://pandas.pydata.org/pandas-docs/dev/computation.html?highlight=exponential#exponentially-weighted-moment-functions

Par ailleurs, il ne devrait pas y avoir de restes de fonctionnalité dans le package scikits.timeseries qui ne sont pas aussi pandas géants.

Modifier: Comme cela est encore une question populaire, il y a maintenant un travail dans la demande de traction de progression ajouter plus de fonctions de lissage exponentiel statsmodels here

+1

merci beaucoup pour la mise à jour et pour le bon travail. – foc

8

D'une manière ou d'une autre, certaines questions ont été fusionnées ou supprimées, alors je posterai ma réponse ici.

lissage Exp dans le python natif.

''' 
simple exponential smoothing 
go back to last N values 
y_t = a * y_t + a * (1-a)^1 * y_t-1 + a * (1-a)^2 * y_t-2 + ... + a*(1-a)^n * y_t-n 
''' 
from random import random,randint 

def gen_weights(a,N): 
    ws = list() 
    for i in range(N): 
     w = a * ((1-a)**i) 
     ws.append(w) 
    return ws 

def weighted(data,ws): 
    wt = list() 
    for i,x in enumerate(data): 
     wt.append(x*ws[i]) 
    return wt 

N = 10 
a = 0.5 
ws = gen_weights(a,N) 
data = [randint(0,100) for r in xrange(N)] 
weighted_data = weighted(data,ws) 
print 'data: ',data 
print 'weights: ',ws 
print 'weighted data: ',weighted_data 
print 'weighted avg: ',sum(weighted_data) 
Questions connexes