按组计数(熊猫)

霓虹灯

我有 5 年的库存日期。我需要这样做:取第 1、2 和 3 年,在连续看到 k 个“下跌日”后,第二天是“上涨日”的概率是多少?例如,如果 k = 3,看到“-、-、-、+”与看到“-、-、-、-”的概率是多少。为 k = 1, 2, 3 计算这个。我玩过 groupby 和 cumsum,但似乎无法正确处理。

例如:

group1 = df[df['True Label'] == "-"].groupby((df['True Label'] != "-").cumsum()) 
日期 真标签
2019-01-02 +
2019-01-03 ——
2019-01-04 +
2019-01-07 +
2019-01-08 +
斯科特·波士顿

试试这个逻辑:

import pandas as pd
import numpy as np

np.random.seed(123)
s = pd.Series(np.random.choice(['+','-'], 1000))
sm = s.groupby((s == '+').cumsum()).cumcount()

prob = (sm.diff() == -3).sum() / (sm == 3).sum()
prob

输出:

0.43661971830985913

细节:

使用(s == '+').cumsum()创建组“ - ”记录,groupbycumcount本组中的元素,第一个元素是“+”和cumcount开始零。因此,'+--' 将变为 0、1、2。现在,利用差异找出 '-' 变成 '+' 的位置。

如果这等于 -3,那么我们知道这个组有三个减号,后面跟着一个“+”。

检查sm==3以达到您使用“---”的所有次数,sum然后进行除法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章