如何计算 python 中时间序列的均值和最大值增加、减少
How to calculate mean and max increase, decrease of time series in python
我正在尝试计算 Python 中时间序列的这些特征:
- 平均增减
- 最大增加和减少
但我不知道如何快速、简单和正确地完成它。也许用 numpy 或 scipy.
我很高兴能得到任何帮助。
我找到了以下特征的数学解释:
非常感谢
如果数据在列表中,您可以将其切分。例如:
a = [2,6,8,4,5,9]
b = a[:-1]
c = a[1:]
所以你可以通过
获得最大的提升
max([j-i for (i,j) in zip(b,c)])
如果数据很大,使用 numpy 是一种方法,而且实际上会更容易,只需将 "a" 设为 numpy.array,然后您可以获得最大增加:
numpy.max(c-b)
您可以使用 np.diff
计算数组中连续元素之间的差异,然后使用布尔索引 select 正值(对应于增加)或负值(对应于减少) .从那里,您可以取平均值、最大值等。
例如:
x = np.random.random_integers(0, 10, 20)
print(x)
# [10 10 5 4 2 10 8 9 10 2 2 0 7 3 8 6 4 1 3 10]
dx = np.diff(x)
print(dx)
# [ 0 -5 -1 -2 8 -2 1 1 -8 0 -2 7 -4 5 -2 -2 -3 2 7]
increases = dx[dx > 0]
print(increases)
# [8 1 1 7 5 2 7]
print(increases.mean())
# 4.42857142857
print(increases.max())
# 8
我正在尝试计算 Python 中时间序列的这些特征:
- 平均增减
- 最大增加和减少
但我不知道如何快速、简单和正确地完成它。也许用 numpy 或 scipy.
我很高兴能得到任何帮助。
我找到了以下特征的数学解释:
非常感谢
如果数据在列表中,您可以将其切分。例如:
a = [2,6,8,4,5,9]
b = a[:-1]
c = a[1:]
所以你可以通过
获得最大的提升max([j-i for (i,j) in zip(b,c)])
如果数据很大,使用 numpy 是一种方法,而且实际上会更容易,只需将 "a" 设为 numpy.array,然后您可以获得最大增加:
numpy.max(c-b)
您可以使用 np.diff
计算数组中连续元素之间的差异,然后使用布尔索引 select 正值(对应于增加)或负值(对应于减少) .从那里,您可以取平均值、最大值等。
例如:
x = np.random.random_integers(0, 10, 20)
print(x)
# [10 10 5 4 2 10 8 9 10 2 2 0 7 3 8 6 4 1 3 10]
dx = np.diff(x)
print(dx)
# [ 0 -5 -1 -2 8 -2 1 1 -8 0 -2 7 -4 5 -2 -2 -3 2 7]
increases = dx[dx > 0]
print(increases)
# [8 1 1 7 5 2 7]
print(increases.mean())
# 4.42857142857
print(increases.max())
# 8