热线电话:13121318867

登录
2019-03-01 阅读量: 733
如何在pandas中找到模式

使用pandas和python,我想找到一个模式,其中流的流入量比平常大得多,并且在5天内跟随流量不小于流中流入量的5%。见下面的数据框

我希望能够在第4列中标记此运动(让我们称为标志)。

想象一下,这个dataFrame有几千行,你想找到一个类似的模式,并在整个过程中标记它。

Index date stream

0 2019-01-01 2

1 2019-01-02 0

2 2019-01-03 1

3 2019-01-04 0

4 2019-01-05 3

5 2019-01-06 2

7 2019-01-07 100

8 2019-01-08 0

9 2019-01-09 0

10 2019-01-10 -95

11 2019-01-11 3

12 2019-01-13 0

13 2019-01-14 2

14 2019-01-15 -1

15 2019-01-16 0

16 2019-01-17 2

17 2019-01-18 93

18 2019-01-19 -2

解决办法:stream = [2, 0, 1, 0, 3, 2, 100, 0, 0, -95, 3, 0, 2, -1, 0, 2, 93, -2, -89]

date = [

'2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04', '2019-01-05',

'2019-01-06', '2019-01-07', '2019-01-08', '2019-01-09', '2019-01-10',

'2019-01-11', '2019-01-13', '2019-01-14', '2019-01-15', '2019-01-16',

'2019-01-17', '2019-01-18', '2019-01-19', '2019-01-20'

]

df = pd.DataFrame({'date': date, 'stream': stream})

def process(row):

if row['stream'] > 20*row['stream_mean']:

return 1

else:

return 0

df['stream_mean'] = df['stream'].rolling(5).mean()

df['stream_mean'] = df['stream_mean'].shift(periods=1)

df['flag'] = df.apply(process,axis=1)

df

如果你申请Bollinger Band并创建一个Standard Deviation column并且也可以尝试一种95% Confidence interval方法会更好

19 2019-01-20 -89

0.0000
5
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子