Python 数据帧列的连续递增值的统计信息
我试图计算列中连续较高值的条纹的统计信息(最小值、最大值、平均值…)。我对熊猫和统计数据相当陌生,搜索了一些,但找不到答案 数据为财务数据,OHLC值在列中,例如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
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