Python 数据帧列的连续递增值的统计信息

Python 数据帧列的连续递增值的统计信息,python,numpy,pandas,Python,Numpy,Pandas,我试图计算列中连续较高值的条纹的统计信息(最小值、最大值、平均值…)。我对熊猫和统计数据相当陌生,搜索了一些,但找不到答案 数据为财务数据,OHLC值在列中,例如 Open High Low Close Date 2013-10-20 1.36825 1.38315 1.36502 1.38029 2013-10-27 1.38072 1.38167

我试图计算列中连续较高值的条纹的统计信息(最小值、最大值、平均值…)。我对熊猫和统计数据相当陌生,搜索了一些,但找不到答案

数据为财务数据,OHLC值在列中,例如

              Open     High     Low     Close
Date                                          
2013-10-20  1.36825  1.38315  1.36502  1.38029
2013-10-27  1.38072  1.38167  1.34793  1.34858   
2013-11-03  1.34874  1.35466  1.32941  1.33664   
2013-11-10  1.33549  1.35045  1.33439  1.34950  
....
例如,平均连续高-低条纹

以后编辑

我想我没有解释清楚。序列中已计数的项目无法再次计数。因此,对于序列:

1,2,3,4,1,2,3,3,2,1

有4条条纹:
1,2,3,4 | 1,2,3,3 | 2 | 1

max = 4
min = 1
avg = (4+4+1+1)/4 = 2.5

Hi@soso,这里所说的“一列中连续的较高值的条纹”,你的意思是移动平均、移动最小值和移动最大值吗?Hi ericmjl,按以下顺序:5,2,4,6,4,7。连续值的最大条纹的值为3,因为:2,4,6序列。序列中的每个数字都比前一个数字高(或至少相等)。清楚吗?对不起,我想我没有解释清楚,我用你列表中的一个例子编辑了原始帖子。无论如何,谢谢你,这是一个好的开始!非常感谢@cyborg!这正是我想要的。现在,我们将继续并尝试理解代码。
import pandas as pd
import numpy as np

s = pd.Series([1,2,3,4,1,2,3,3,2,1])

def ascends(s):
    diff = np.r_[0, (np.diff(s.values)>=0).astype(int), 0]
    diff2 = np.diff(diff)
    descends = np.where(np.logical_not(diff)[1:] & np.logical_not(diff)[:-1])[0]
    starts = np.sort(np.r_[np.where(diff2 > 0)[0], descends])
    ends = np.sort(np.r_[np.where(diff2 < 0)[0], descends])
    return ends - starts + 1

b = ascends(s)
print b
print b.max()
print b.min()
print b.mean()
[4 4 1 1]
4
1
2.5