标签: time-series

如何重新采样具有应用于每列的不同功能的数据帧?

我有大熊猫温度和辐射的时间序列dataframe.时间分辨率是常规步骤1分钟.

import datetime
import pandas as pd
import numpy as np

date_times = pd.date_range(datetime.datetime(2012, 4, 5, 8, 0),
                           datetime.datetime(2012, 4, 5, 12, 0),
                           freq='1min')
tamb = np.random.sample(date_times.size) * 10.0
radiation = np.random.sample(date_times.size) * 10.0
frame = pd.DataFrame(data={'tamb': tamb, 'radiation': radiation},
                     index=date_times)
frame
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 241 entries, 2012-04-05 08:00:00 to 2012-04-05 12:00:00
Freq: T
Data columns:
radiation    241  non-null values
tamb         241  non-null values
dtypes: float64(2)
Run Code Online (Sandbox Code Playgroud)

我怎样才能将其下采样dataframe到一小时的分辨率,计算温度的每小时平均值辐射的每小时总和

python numpy time-series pandas

30
推荐指数
1
解决办法
3万
查看次数

模块'pandas'没有属性'rolling_mean'

我正在尝试构建一个用于异常检测的ARIMA.我需要找到时间序列图的移动平均线我试图使用pandas 0.23

import pandas as pd
import numpy as np
from statsmodels.tsa.stattools import adfuller
import matplotlib.pylab as plt
from matplotlib.pylab import rcParams
rcParams['figure.figsize'] = 15, 6

dateparse = lambda dates: pd.datetime.strptime(dates, '%Y-%m')
data = pd.read_csv('AirPassengers.csv', parse_dates=['Month'], index_col='Month',date_parser=dateparse)

data.index
ts = data['#Passengers']
ts.head(10)

plt.plot(ts)
ts_log = np.log(ts)
plt.plot(ts_log)
moving_avg = pd.rolling_mean(ts_log,12)  # here is the error

pd.rolling_mean  
plt.plot(ts_log)
plt.plot(moving_avg, color='red') 
Run Code Online (Sandbox Code Playgroud)

错误:回溯(最近一次调用最后一次):文件"C:\ Program Files\Python36\lastmainprogram.py",第74行,在moving_avg = pd.rolling_mean(ts_log,12)中AttributeError:模块'pandas'没有属性'rolling_mean "

python machine-learning time-series pandas arima

30
推荐指数
2
解决办法
3万
查看次数

使用ts()对象对每周数据进行R时间序列建模

我正在尝试使用基于每周数据的R进行时间序列建模和预测,如下所示:

biz week     Amount        Count
2006-12-27   973710.7     816570
2007-01-03  4503493.2    3223259
2007-01-10  2593355.9    1659136
2007-01-17  2897670.9    2127792
2007-01-24  3590427.5    2919482
2007-01-31  3761025.7    2981363
2007-02-07  3550213.1    2773988
2007-02-14  3978005.1    3219907
2007-02-21  4020536.0    3027837
2007-02-28  4038007.9    3191570
2007-03-07  3504142.2    2816720
2007-03-14  3427323.1    2703761
...
2014-02-26  99999999.9   1234567
Run Code Online (Sandbox Code Playgroud)

关于我的数据:如上所示,每周都标有一周的第一天(我的周从周三开始,到周二结束).当我构建我的ts对象时,我尝试了

ts <- ts(df, frequency=52, start=c(2007,1))
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是:

1)有些年份可能有53周,因此frequency=52这些年不适用;

2)我的开始周/日期是2006-12-27,我该如何设置启动参数?start=c(2006,52)或者start=c(2007,1)自2006-12-27周以来真的跨过年界?另外,对于建模,最好是拥有完整的年份数据(比如2007年我的开始年份,如果我只有部分年份的数据),最好不要使用2007,而是从2008年开始?那么2014年:既然还不是完整的一年,我应该使用我的建模吗?无论哪种方式,我仍然有一个问题,是否在2006-12-27这样的年份边界中包括那些周.我应该包括wk 12007年还是2006年的最后一周?

3)当我使用ts <- ts(df, frequency=52, start=c(2007,1)),然后打印出来,我得到了如下图所示的结果,这样反而2007.01,2007.02,2007.52 ...,我得到了2007.000,2007.019,...,它从获取1/52=0.019.这在数学上是正确的,但不容易解释.有没有办法将它标记为日期本身就像数据框或至少一样2007 wk1, 2007 wk2...

========= …

r time-series

28
推荐指数
2
解决办法
4万
查看次数

如何将数据帧转换为R中的时间序列

我有一个csv文件,其中我有2个股票收盘价(每天)

Dates   Bajaj_close Hero_close
3/14/2013   1854.8  1669.1
3/15/2013   1850.3  1684.45
3/18/2013   1812.1  1690.5
3/19/2013   1835.9  1645.6
3/20/2013   1840    1651.15
3/21/2013   1755.3  1623.3
3/22/2013   1820.65 1659.6
3/25/2013   1802.5  1617.7
3/26/2013   1801.25 1571.85
3/28/2013   1799.55 1542
Run Code Online (Sandbox Code Playgroud)

我想将上述数据转换为时间序列格式.(开始日期是3/14/2013 和结束日期是3/13/2015)我试过这个,但它给了我一些奇怪的输出

values <- bajaj_hero[, -1]  (excluded first column i.e date in real dataset)
bajaj_hero_timeseries <- ts(values,start=c(2013,1),end=c(2015,3),frequency=365)
Run Code Online (Sandbox Code Playgroud)

输出是:

           Bajaj_close Hero_close
2013.000     1854.80    1669.10
2013.003     1850.30    1684.45
2013.005     1812.10    1690.50
2013.008     1835.90    1645.60
2013.011     1840.00    1651.15
2013.014     1755.30    1623.30
2013.016     1820.65    1659.60
2013.019     1802.50 …
Run Code Online (Sandbox Code Playgroud)

r time-series

28
推荐指数
3
解决办法
9万
查看次数

R中的快速傅里叶变换

我有一个数据集,其中包含12个月内动物的每小时访问次数.我想使用快速傅立叶变换来检查周期性模式和周期性.在过去,我使用Statistica就是为了这个; 但是,我想用R来得到光谱密度与周期的关系图.在R中有一个简单的方法吗?如果可能的话,我想确定12和24小时的活动高峰.

r fft time-series period spectral-density

27
推荐指数
2
解决办法
4万
查看次数

请求例如:用于预测序列中的下一个值的递归神经网络

任何人都可以给我一个(pybrain)python中循环神经网络的实例,以预测序列的下一个值吗?(我已经阅读了pybrain文档,我认为没有明确的例子.)我也发现了这个问题.但我没有看到它在更一般的情况下是如何工作的.因此,我在问这里是否有人能够找到一个明确的例子,说明如何使用递归神经网络预测pybrain中序列的下一个值.

举个例子.

比方说,我们有一系列数字在[1,7]范围内.

First run (So first example): 1 2 4 6 2 3 4 5 1 3 5 6 7 1 4 7 1 2 3 5 6

Second run (So second example): 1 2 5 6 2 4 4 5 1 2 5 6 7 1 4 6 1 2 3 3 6

Third run (So third example): 1 3 5 7 2 4 6 7 1 3 5 6 7 1 4 6 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning time-series neural-network pybrain

27
推荐指数
1
解决办法
1万
查看次数

通过基于时间的窗口优化不规则时间序列的滚动函数

是否有某种方式使用rollapply(从zoo包装或类似的东西)优化功能(rollmean,rollmedian等)来计算与基于时间窗口的滚动功能,而不是一个基于的若干意见?我想要的很简单:对于不规则时间序列中的每个元素,我想计算一个带有N天窗口的滚动函数.也就是说,窗口应包括当前观察前N天的所有观察结果.时间序列也可能包含重复项.

以下是一个例子.鉴于以下时间序列:

      date  value
 1/11/2011      5
 1/11/2011      4
 1/11/2011      2
 8/11/2011      1
13/11/2011      0
14/11/2011      0
15/11/2011      0
18/11/2011      1
21/11/2011      4
 5/12/2011      3
Run Code Online (Sandbox Code Playgroud)

具有5天窗口的滚动中位数(右侧对齐)应导致以下计算:

> c(
    median(c(5)),
    median(c(5,4)),
    median(c(5,4,2)),
    median(c(1)),
    median(c(1,0)), 
    median(c(0,0)),
    median(c(0,0,0)),
    median(c(0,0,0,1)),
    median(c(1,4)),
    median(c(3))
   )

 [1] 5.0 4.5 4.0 1.0 0.5 0.0 0.0 0.0 2.5 3.0
Run Code Online (Sandbox Code Playgroud)

我已经找到了一些解决方案,但它们通常很棘手,通常意味着很慢.我设法实现了自己的滚动函数计算.问题是,对于非常长的时间序列,中位数(rollmedian)的优化版本可以产生巨大的时间差,因为它考虑了窗口之间的重叠.我想避免重新实现它.我怀疑rollapply参数有一些技巧可以使它工作,但我无法弄明白.在此先感谢您的帮助.

r time-series zoo

26
推荐指数
3
解决办法
2605
查看次数

如何在sklearn中实现前进测试?

在sklearn中,GridSearchCV可以将管道作为参数,通过交叉验证找到最佳估算器.但是,通常的交叉验证是这样的:在此输入图像描述

为了交叉验证时间序列数据,训练和测试数据经常被拆分为:在此输入图像描述

也就是说,测试数据应始终领先于训练数据.

我的想法是:

  1. 编写我自己的k-fold版本类并将其传递给GridSearchCV,这样我就可以享受管道的便利.问题是让GridSearchCV使用指定的训练和测试数据指数似乎很困难.

  2. 写一个新类GridSearchWalkForwardTest,它类似于GridSearchCV,我正在研究源代码grid_search.py​​并发现它有点复杂.

任何建议都是受欢迎的.

python time-series scikit-learn cross-validation

26
推荐指数
2
解决办法
5216
查看次数

预测时间序列数据

我做了一些研究,我一直在寻找解决方案.我有一个时间序列数据,非常基本的数据框,让我们称之为x:

Date        Used
11/1/2011   587
11/2/2011   578
11/3/2011   600
11/4/2011   599
11/5/2011   678
11/6/2011   555
11/7/2011   650
11/8/2011   700
11/9/2011   600
11/10/2011  550
11/11/2011  600
11/12/2011  610
11/13/2011  590
11/14/2011  595
11/15/2011  601
11/16/2011  700
11/17/2011  650
11/18/2011  620
11/19/2011  645
11/20/2011  650
11/21/2011  639
11/22/2011  620
11/23/2011  600
11/24/2011  550
11/25/2011  600
11/26/2011  610
11/27/2011  590
11/28/2011  595
11/29/2011  601
11/30/2011  700
12/1/2011   650
12/2/2011   620
12/3/2011   645
12/4/2011   650
12/5/2011   639
12/6/2011   620
12/7/2011   600
12/8/2011 …
Run Code Online (Sandbox Code Playgroud)

r time-series xts

25
推荐指数
3
解决办法
4万
查看次数

过滤函数的简单示例,具体为递归选项

我正在寻找一些简单的(即 - 没有数学符号,长形式可重现的代码)filterR中的函数示例我认为我对卷积方法有所了解,但我坚持推广递归选项.我已阅读并与各种文档作斗争,但帮助对我来说有点不透明.

以下是我到目前为止所发现的例子:

# Set some values for filter components
f1 <- 1; f2 <- 1; f3 <- 1;
Run Code Online (Sandbox Code Playgroud)

我们走了:

# basic convolution filter
filter(1:5,f1,method="convolution")
[1] 1 2 3 4 5

#equivalent to:
x[1] * f1 
x[2] * f1 
x[3] * f1 
x[4] * f1 
x[5] * f1 

# convolution with 2 coefficients in filter
filter(1:5,c(f1,f2),method="convolution")
[1]  3  5  7  9 NA

#equivalent to:
x[1] * f2 + x[2] * f1
x[2] * f2 + x[3] * …
Run Code Online (Sandbox Code Playgroud)

r time-series filter

25
推荐指数
1
解决办法
2万
查看次数