在很长一段时间内删除假期和周末系列,如何在Python中建模时间序列?

时间:2011-10-04 20:04:59

标签: python time-series

Python中是否有一些函数可以处理这个问题。 GoogleDocs有一个工作日操作,所以也许在Python中有类似的东西。我很确定有人必须解决这个问题,在财务和研究等稀疏数据中会出现类似的问题。我基本上只是试图组织大量不同大小的向量,按天,时间序列索引,我不知道我应该如何度过这些日子 - 标记第一天1和最后一天用N或unix - 时间或应该怎么做?我不确定是否应该将时间序列保存到矩阵中,这样我就可以更容易地对它们进行建模以计算相关矩阵和这样的事情,还有什么准备好做这些事情?

让我们尝试解决这个问题,而不会产生“实际”的混乱:

import itertools
seq = range(100000)
criteria  = cycle([True]*10 + [False]*801)
list(compress(seq, criteria))

现在必须将它们更改为几天,然后将$ \ mathbb R $更改为$(\ mathbb R,\ mathbb R)$,元组。所以$ V:\ mathbb R \ mapsto \ mathbb R ^ {2} $缺失,调查。

[更新]

让我们玩吧!下面的代码解决了子问题 - 创建一些测试数据来测试事物 - 现在我们需要在那里创建任意日期和估值来尝试在任意时间序列上测试它。如果我们可以创建一些函数$ V $,我们非常接近解决这个问题......它必须考虑假期和周末所以可能不容易(不确定)。

import itertools as i
import time
import math
import numpy



def createRandomData():
    samples=[]

    for x in range(5):
        seq = range(5)
        criteria  = i.cycle([True]*x+ [False]*3)

        samples += [list(i.compress( seq, criteria ))] 

    return samples

def createNNtriangularMatrix(data):
    N = len(data)
    return [aa+[0]*(N-len(aa)) for aa in data]


A= createNNtriangularMatrix(createRandomData())
print numpy.array(A)
print numpy.corrcoef(A)

5 个答案:

答案 0 :(得分:1)

我认为你应该弄清楚你想要包含的日子,并创建一个(可能是循环的)子程序,在你的大清单上使用切片操作。

对于不连续切片,您可以查看以下问题:

Discontinuous slice in python list

或者你可能会把你不想要的日子变成零值(零或无)。

答案 1 :(得分:1)

尝试使用pandas。您可以在工作日创建DateOffset,并将数据包含在DataFrame中(请参阅:http://pandas.pydata.org/pandas-docs/stable/timeseries.html)进行分析。

答案 2 :(得分:0)

我认为这取决于您的问题范围,对于个人日历,“日期”足以进行索引。

一个人的生命长达200年,大约73000天,只需计算并记录所有,也许使用一个字典,例如。

day = {}
# day[0] = [event_a, event_b, ...]
# or you may want to rewrite the __getitem__ method like this: day['09-05-2012']

答案 3 :(得分:0)

为什么要删除假期和周末?是因为它们是异常值还是零值?如果它们是零,则它们将由模型处理。您可能希望将数据保留在时间序列中,并使用虚拟变量来模拟季节性效果(即每月假人),星期几假人和假日假人。显然,我很沮丧。我有季节性的人无法处理时间序列分析,甚至将工作日分成一个时间序列,周末则进入另一个时间系列,这完全忽略了假期的领先和滞后影响。

答案 4 :(得分:0)

如果您需要交易日,则可以使用pandas datareader软件包下载美国的s& p 500历史价格,并使用日期索引作为数据的掩码。

在手机上回答,我稍后会添加链接和代码。