Python Smooth Time Series Data

前端 未结 1 1638
不思量自难忘°
不思量自难忘° 2020-12-15 23:17

I have some data in python that is unixtime, value:

[(1301672429, 274), (1301672430, 302), (1301672431, 288)...]

Time constantly steps by o

相关标签:
1条回答
  • 2020-12-15 23:39

    Using http://www.scipy.org/Cookbook/SignalSmooth:

    import numpy
    def smooth(x,window_len=11,window='hanning'):
            if x.ndim != 1:
                    raise ValueError, "smooth only accepts 1 dimension arrays."
            if x.size < window_len:
                    raise ValueError, "Input vector needs to be bigger than window size."
            if window_len<3:
                    return x
            if not window in ['flat', 'hanning', 'hamming', 'bartlett', 'blackman']:
                    raise ValueError, "Window is on of 'flat', 'hanning', 'hamming', 'bartlett', 'blackman'"
            s=numpy.r_[2*x[0]-x[window_len-1::-1],x,2*x[-1]-x[-1:-window_len:-1]]
            if window == 'flat': #moving average
                    w=numpy.ones(window_len,'d')
            else:  
                    w=eval('numpy.'+window+'(window_len)')
            y=numpy.convolve(w/w.sum(),s,mode='same')
            return y[window_len:-window_len+1]
    

    I get what seems to be good results with (Not that I understand the math):

       if form_results['smooth']:
                a = numpy.array([x[1] for x in results])
                smoothed = smooth(a,window_len=21)
                results = zip([x[0] for x in results], smoothed)
    
    0 讨论(0)
提交回复
热议问题