如何找到熊猫时间序列的事件持续时间

J

我在['sign']列中的以下时间序列中确定正负周期。如何获得1和-1的每个持续时间,然后计算1和-1的周期数?

因此,如果我在['sign']列中有五个连续的'1',然后有三个连续的'-1',然后是两个'1',答案是持续时间:5天,3天和2天。然后计数。'1':2和'-1':1。

import pandas_datareader.data as web
import datetime as dt
import numpy as np
import pandas as pd

end = dt.datetime(2016, 12, 31)
start = dt.date(end.year-15, end.month, end.day)

aapl = web.DataReader('AAPL', 'yahoo', start, end)['Adj Close']
aapl = pd.DataFrame(aapl)
aapl['ema'] = aapl.ewm(200).mean()
aapl['diff'] = (aapl['Adj Close'] / aapl['ema']) - 1
aapl['sign'] = np.sign(aapl['diff'])

更新:我意识到,对于持续时间,需要分开计算符号='1'和sign ='-1'的时间段。这是为了对“ 1”和“ -1”期间进行描述性统计。

熊猫版:0.19.2

米拉杜洛

您可以使用diff()和后续cumsum()获取系列中的差异,并进行相应的分组依据。

aapl.groupby((aapl.sign.diff() != 0).cumsum()).size()

至于获取每个符号组的计数,可能有一种更聪明的方法来执行此操作,但是您可以在删除重复项后重新使用相同的diff结果来索引原始sign系列。

aapl.sign.iloc[(aapl.sign.diff() != 0).cumsum().drop_duplicates().index]
               .value_counts().to_dict()

将其很好地放在函数中可能看起来像

def durs(df):
    diffs = (df.sign.diff() != 0).cumsum()
    cnts = df.sign.iloc[diffs.drop_duplicates().index].value_counts().to_dict()
    days = df.groupby(diffs).size()
    return days, cnts

演示版

>>> df
   sign
0     1
1     1
2     1
3     1
4     1
5    -1
6    -1
7    -1
8     1
9     1

>>> days, cnts = durs(df)

>>> days
sign
1    5
2    3
3    2
dtype: int64

>>> cnts
{-1: 1, 1: 2}

更新资料

对于计数1个句点并随后获得输出的注释中的添加请求[5, 2],可以使用类似的方法,获取1的索引,然后按连续数进行分组。

>>> data = np.where(df.sign == 1)[0]

>>> np.diff(np.r_[0, np.where(np.diff(data) != 1)[0]+1, data.size])
array([5, 2])

请注意,我不是NumPy专家,因此在这里不能保证性能。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫时间序列与事件的持续时间

计算时间序列python中事件的持续时间

如何从事件持续时间的数据帧创建时间序列?

熊猫秒数的持续时间

如何离散持续时间溢出的时间序列?

熊猫找到满足条件的日期之间的持续时间?

Angular 事件持续时间

熊猫计数打开/关闭事件的数量和持续时间

如何计算事件总持续时间的经过时间?

如何用熊猫计算日期序列的平均周期持续时间?

如何使用以字符串形式给出的熊猫计算事件的持续时间?

如何计算csv文件中不同重叠事件之间的持续时间 - 熊猫?

PowerBi时间序列持续时间

将事件的时间序列+持续时间重新采样为并发事件

如何找到Power Bi中的总持续时间?

Splunk:如何计算事件持续时间记录?

如何动态检索事件的持续时间?(例如mouseenter)

计算时间序列数据帧中事件的持续时间(python 2.7)

用熊猫绘制水平持续时间

mysql查询以找到持续时间的引擎

明确设置JFR事件的持续时间

具有持续时间的定期事件

最大重叠事件的持续时间

如何处理时间重叠并确定持续时间?熊猫蟒

如何将日期时间序列转换为以小时为单位的实际持续时间?

如何最好地将时间序列压缩为不同的持续时间?

如何使用R计算时间序列数据中的持续时间?

使用熊猫计算重叠时间范围的持续时间

计算熊猫日期时间列的累积持续时间