我有一个列表
YEAR MONTH
1960 5
1961 7
1961 8
1961 11
1962 5
1963 6
1964
1965 7
1966 7
1966 7
1966 10
1967 4
1967 8
1968
1969
1970 8
1971 6
1971 9
1971 10
1972 7
1973 6
1973 9
1974 10
1974 10
1975 10
1976
1977
1978 9
1979 11
1980 7
1980 7
1980 8
1981
1982 10
1982 12
1983
1984 7
1985 9
1986
1987
1988 9
1988 10
1989 7
1989 10
1990
1991 7
1992
1993 6
1993 7
1993 9
1993 9
1994
1995 7
1996 8
1996 9
1997 5
1998 8
1998 9
1998 10
1999 8
1999 9
2000 9
2001
2002 1
2003 5
2003 7
2003 8
2003 9
2003 10
2004
2005 11
2006 7
2006 10
2007 9
2007 11
2007 11
2008 5
2009 5
2009 7
2009 9
2009 9
2010 10
2011 5
2011 9
2011 9
2012 8
2013 7
2014 9
2015 7
2016
2017 8
2018 10
2019 11
2020
我想执行一个运行平滑时间序列,使用公式生成另一个列表:
((A-E)+3*(B+D)+4*C)/12
最后一个值在z之前。我无法在列表中找到数学运算的样本。大多数参考文献和示例都在两个列表之间。我在用Jupyter Notebook
您可以使用滑动窗口方法。这意味着您将获得一个特定大小的窗口,并将其滑动到数据上,在每一步执行计算。
如果你想使用5的窗口大小,你可以开始执行列表的前5个元素的计算:(a - e)+3*(B+D)+4C。然后你可以将窗口向右移动一个元素,并使用接下来的5个元素重新计算平滑值:(B-F)+3(C+E)+4*D。您可以继续此过程,直到您到达列表的末尾。
def running_smooth(data, window_size):
smoothed_data = []
for i in range(len(data) - window_size + 1):
window = data[i:i+window_size]
#calculation here
value = (window[0]-window[4]) + 3*(window[1]+window[3]) + 4*window[2]
smoothed_data.append(value)
return smoothed_data