Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 大熊猫不规则的、不连续的周期_Python_Pandas_Time Series - Fatal编程技术网

Python 大熊猫不规则的、不连续的周期

Python 大熊猫不规则的、不连续的周期,python,pandas,time-series,Python,Pandas,Time Series,我需要表示一系列事件。这些事件有点不寻常,因为它们是: 非连续 非重叠 不规则持续时间 例如: 1200-1203 1210-1225 1304-1502 我想用Pandas.PeriodIndex来表示这些事件,但我不知道如何创建持续时间不规则的Period对象 我有两个问题: 是否有方法使用现有功能创建持续时间不规则的Period对象 如果没有,您能否建议如何修改Pandas以提供不规则的持续时间期间对象?(建议可以“使用定制的DateOffset类,并使用精心编制的onOffset

我需要表示一系列事件。这些事件有点不寻常,因为它们是:

  • 非连续
  • 非重叠
  • 不规则持续时间
例如:

  • 1200-1203
  • 1210-1225
  • 1304-1502
我想用Pandas.PeriodIndex来表示这些事件,但我不知道如何创建持续时间不规则的
Period
对象

我有两个问题:

  • 是否有方法使用现有功能创建持续时间不规则的
    Period
    对象
  • 如果没有,您能否建议如何修改Pandas以提供不规则的持续时间
    期间
    对象?(建议可以“使用定制的DateOffset类,并使用精心编制的onOffset、rollforward、rollback和apply方法”)
  • 笔记
  • Period
    的文档字符串表明,可以为“5分钟”指定任意持续时间,如
    5T
    。我相信这个文档串是不正确的。运行
    pd.Period('2013-01-01',freq='5T')
    会产生异常
    ValueError:仅支持mult==1
    。我已经报告了
  • “对于规则的时间跨度,pandas使用
    Period
    对象作为标量值,使用
    PeriodIndex
    作为跨度序列。在未来的版本中将更好地支持具有任意起点和终点的不规则间隔”(我的重点)
  • 更新1 构建一个带有自定义持续时间的
    时段
    ,看起来非常简单但是我认为主要的障碍是说服
    周期索引
    接受不同频率的
    周期。e、 g:

    In [93]: pd.PeriodIndex([pd.Period('2000', freq='D'), 
                             pd.Period('2001', freq='T')])
    
    ValueError: 2001-01-01 00:00 is wrong freq
    

    PeriodIndex
    中,似乎有一个中心假设,即每个周期都有相同的
    freq

    一个可能的解决方案,具体取决于应用,是通过创建一个PeriodIndex来存储数据,该索引的周期等于处理数据所需的最小时间分辨率单位,然后将数据划分到每个事件的存储箱中,使剩余的存储箱为空。

    如果时间段为分钟,则必须通过日期时间,包括以下分钟:

    pd.PeriodIndex([pd.Period('2000-01-01 00:00', freq='T'), 
                         pd.Period('2001-01-01 00:00', freq='T')])
    
    结果是:

    PeriodIndex(['2000-01-01 00:00', '2001-01-01 00:00'], dtype='period[T]', freq='T')
    

    我认为最好保持周期性,也就是说,规律性。比如说,我们可以称你所寻找的东西为“时间跨度”。一段时间在这里有什么帮助?例如,您能否为每个跨距创建一个“开始”列和一个“结束”列?请备份并解释您试图用数据实现的目标。嗨,丹。谢谢你的快速回复。您的建议与我现在计划实现的非常相似:我计划使用
    数据帧
    。每行代表一个事件。索引将表示每个事件的开始时间,并且将有一个
    end
    列来表示每个事件的结束时间。为了支持和解释我的最终目标:我正在编写一个“特征检测器”,它通过timeseries数据集运行,并识别原始数据中的“特征”,这些特征可以持续不同的持续时间。我有一个类似的问题,尽管我的周期是规则的,但我无法创建具有所需持续时间的周期-例如,我在Pandas文档中发现的“5000T”。这个问题似乎是众所周知的。“对于规则时间跨度,pandas使用Period对象作为标量值,PeriodIndex作为跨度序列。未来的版本将更好地支持具有任意起点和终点的不规则间隔。”不幸的是,如果“最小时间单位”非常小,这将是非常低效的。