我做了一些研究,我一直在寻找解决方案.我有一个时间序列数据,非常基本的数据框,让我们称之为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) 我正在尝试将mongodb用于时间序列数据库,并且想知道是否有人可以建议如何最好地为该场景设置它.
时间序列数据与股票价格历史非常相似.我收集了来自不同机器的各种传感器的数据集.有十亿个时间戳的值,我想问下面的问题(最好是从数据库而不是应用程序级别):
对于给定的一组传感器和时间间隔,我希望按时间顺序排列在该间隔内的所有时间戳和传感器值.假设所有传感器共享相同的时间戳(它们都是同时采样的).
对于给定的一组传感器和时间间隔,我希望按时间顺序排列在给定间隔内的每个第k项(时间戳和相应的传感器值).
有关如何最好地设置并实现查询的任何建议?
谢谢你的建议.
我有这样的数据帧
d={}
d['z']=['Q8','Q8','Q7','Q9','Q9']
d['t']=['10:30','10:31','10:38','10:40','10:41']
d['qty']=[20,20,9,12,12]
Run Code Online (Sandbox Code Playgroud)
我想比较第一行和第二行
期望值是
qty t z valid
0 20 2015-06-05 10:30:00 Q8 False
1 20 2015-06-05 10:31:00 Q8 True
2 9 2015-06-05 10:38:00 Q7 False
3 12 2015-06-05 10:40:00 Q9 False
4 12 2015-06-05 10:41:00 Q9 True
Run Code Online (Sandbox Code Playgroud) 我正在研究一个多变量(100 多个变量)多步(t1 到 t30)预测问题,其中时间序列频率为每 1 分钟一次。该问题需要预测 100 多个变量之一作为目标。我很想知道是否可以使用 FB Prophet 的 Python API 来做到这一点。我能够仅使用目标变量和日期时间变量以单变量方式完成此操作。任何帮助和指导表示赞赏。请让我知道这个问题是否需要进一步的输入或澄清。
python machine-learning time-series forecasting facebook-prophet
在与NumPy和dateutil斗争了几天后,我最近发现了令人惊叹的Pandas库.我一直在仔细阅读文档和源代码,但我无法弄清楚如何date_range()
在正确的断点处生成索引.
from datetime import date
import pandas as pd
start = date('2012-01-15')
end = date('2012-09-20')
# 'M' is month-end, instead I need same-day-of-month
date_range(start, end, freq='M')
Run Code Online (Sandbox Code Playgroud)
我想要的是:
2012-01-15
2012-02-15
2012-03-15
...
2012-09-15
Run Code Online (Sandbox Code Playgroud)
我得到了什么:
2012-01-31
2012-02-29
2012-03-31
...
2012-08-31
Run Code Online (Sandbox Code Playgroud)
我需要一个月大小的块来计算一个月中可变的天数.这可以使用dateutil.rrule:
rrule(freq=MONTHLY, dtstart=start, bymonthday=(start.day, -1), bysetpos=1)
Run Code Online (Sandbox Code Playgroud)
丑陋和难以辨认,但它的工作原理.我怎么能和熊猫一起做这个?我打得既date_range()
和period_range()
,到目前为止,没有运气.
我的实际目标是使用groupby
,crosstab
和/或resample
计算的基础上,周期内各个条目的总和/单元/等各个周期值.换句话说,我想从以下数据转换数据:
total
2012-01-10 00:01 50
2012-01-15 01:01 55
2012-03-11 00:01 60
2012-04-28 00:01 80
#Hypothetical usage
dataframe.resample('total', how='sum', freq='M', start='2012-01-09', end='2012-04-15')
Run Code Online (Sandbox Code Playgroud)
至
total …
Run Code Online (Sandbox Code Playgroud) 我有很多已知异常值的数据集(大订单)
data <- matrix(c("08Q1","08Q2","08Q3","08Q4","09Q1","09Q2","09Q3","09Q4","10Q1","10Q2","10Q3","10Q4","11Q1","11Q2","11Q3","11Q4","12Q1","12Q2","12Q3","12Q4","13Q1","13Q2","13Q3","13Q4","14Q1","14Q2","14Q3","14Q4","15Q1", 155782698, 159463653.4, 172741125.6, 204547180, 126049319.8, 138648461.5, 135678842.1, 242568446.1, 177019289.3, 200397120.6, 182516217.1, 306143365.6, 222890269.2, 239062450.2, 229124263.2, 370575384.7, 257757410.5, 256125841.6, 231879306.6, 419580274, 268211059, 276378232.1, 261739468.7, 429127062.8, 254776725.6, 329429882.8, 264012891.6, 496745973.9, 284484362.55),ncol=2,byrow=FALSE)
Run Code Online (Sandbox Code Playgroud)
这个特定系列的前11个异常值是:
outliers <- matrix(c("14Q4","14Q2","12Q1","13Q1","14Q2","11Q1","11Q4","14Q2","13Q4","14Q4","13Q1",20193525.68, 18319234.7, 12896323.62, 12718744.01, 12353002.09, 11936190.13, 11356476.28, 11351192.31, 10101527.85, 9723641.25, 9643214.018),ncol=2,byrow=FALSE)
Run Code Online (Sandbox Code Playgroud)
有哪些方法可以预测考虑这些异常值的时间序列?
我已经尝试更换下一个最大的异常值(因此,运行数据集10次,用下一个最大值替换异常值,直到第10个数据集替换掉所有异常值).我也试过简单地删除异常值(因此每次再次运行数据集10次删除异常值,直到在第10个数据集中删除所有10个异常值)
我只想指出,删除这些大订单并不会完全删除数据点,因为该季度还会发生其他交易
我的代码通过多个预测模型测试数据(ARIMA加权样本,ARIMA加权样本,ARIMA加权,ARIMA,加性Holt-winters加权和Multiplcative Holt-winters加权)所以它需要是可以的适应这些多种模式.
以下是我使用的几个数据集,但我没有这些系列的异常值
data <- matrix(c("08Q1","08Q2","08Q3","08Q4","09Q1","09Q2","09Q3","09Q4","10Q1","10Q2","10Q3","10Q4","11Q1","11Q2","11Q3","11Q4","12Q1","12Q2","12Q3","12Q4","13Q1","13Q2","13Q3","13Q4","14Q1","14Q2","14Q3", 26393.99306, 13820.5037, 23115.82432, 25894.41036, 14926.12574, 15855.8857, 21565.19002, 49373.89675, 27629.10141, 43248.9778, 34231.73851, 83379.26027, 54883.33752, 62863.47728, 47215.92508, 107819.9903, 53239.10602, 71853.5, 59912.7624, 168416.2995, 64565.6211, 94698.38748, 80229.9716, 169205.0023, …
Run Code Online (Sandbox Code Playgroud) 我有一个正常的df.index,我想补充几个小时.
In [1]: test[1].index
Out[2]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2010-03-11, ..., 2014-08-14]
Length: 52, Freq: None, Timezone: None
Run Code Online (Sandbox Code Playgroud)
这是第一个元素的样子:
In [1]: test[1].index[0]
Out[2]: Timestamp('2010-03-11 00:00:00')
Run Code Online (Sandbox Code Playgroud)
所以我试着添加小时:
In [1]: test[1].index[0] + pd.tseries.timedeltas.to_timedelta(16, unit='h')
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个:
Out[2]: Timestamp('2010-03-11 00:00:00.000000016')
Run Code Online (Sandbox Code Playgroud)
但我想得到这个:
Out[2]: Timestamp('2010-03-11 16:00:00')
Run Code Online (Sandbox Code Playgroud)
我错过了什么?环境是Anaconda(最新)Python 2.7.7,iPython 2.2
非常感谢
假设我有以下时间序列:
Timestamp Category
2014-10-16 15:05:17 Facebook
2014-10-16 14:56:37 Vimeo
2014-10-16 14:25:16 Facebook
2014-10-16 14:15:32 Facebook
2014-10-16 13:41:01 Facebook
2014-10-16 12:50:30 Orkut
2014-10-16 12:28:54 Facebook
2014-10-16 12:26:56 Facebook
2014-10-16 12:25:12 Facebook
...
2014-10-08 15:52:49 Youtube
2014-10-08 15:04:50 Youtube
2014-10-08 15:03:48 Vimeo
2014-10-08 15:02:27 Youtube
2014-10-08 15:01:56 DailyMotion
2014-10-08 13:27:28 Facebook
2014-10-08 13:01:08 Vimeo
2014-10-08 12:52:06 Facebook
2014-10-08 12:43:27 Facebook
Name: summary, Length: 600
Run Code Online (Sandbox Code Playgroud)
我想计算每周和每年的每个类别(时间序列中的唯一值/因子).
Example:
Week/Year Category Count
1/2014 Facebook 12
1/2014 Google 5
1/2014 Youtube 2
...
2/2014 Facebook 2 …
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试构建一个用于预测时间序列的简单模型.目标是使用序列训练模型,以便模型能够预测未来值.
我正在使用tensorflow和lstm单元格来执行此操作.该模型通过时间截断反向传播进行训练.我的问题是如何构建培训数据.
例如,假设我们想要学习给定的序列:
[1,2,3,4,5,6,7,8,9,10,11,...]
Run Code Online (Sandbox Code Playgroud)
我们将网络展开num_steps=4
.
选项1
input data label
1,2,3,4 2,3,4,5
5,6,7,8 6,7,8,9
9,10,11,12 10,11,12,13
...
Run Code Online (Sandbox Code Playgroud)
选项2
input data label
1,2,3,4 2,3,4,5
2,3,4,5 3,4,5,6
3,4,5,6 4,5,6,7
...
Run Code Online (Sandbox Code Playgroud)
选项3
input data label
1,2,3,4 5
2,3,4,5 6
3,4,5,6 7
...
Run Code Online (Sandbox Code Playgroud)
选项4
input data label
1,2,3,4 5
5,6,7,8 9
9,10,11,12 13
...
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
time-series ×10
python ×5
pandas ×4
dataframe ×3
datetime ×2
forecasting ×2
r ×2
count ×1
indexing ×1
lstm ×1
mongodb ×1
outliers ×1
prediction ×1
tensorflow ×1
xts ×1