标签: time-series

C++时间序列库(分析和处理)

我希望得到Stack Overflowers关于用C++编写的时间序列库的建议和建议,这些库的一些约束和要求:

  • 性能非常关键
  • 能够处理非常大的数据集(1 MB - 100 TB范围)
  • 各种离散化/分组方法
  • 基本功能(n-avg,EMA,平滑,预测,标准化)
  • 适用于多线程环境
  • 免费或开源首选,但欢迎商业图书馆
  • 能够委派基于GPU的计算的库是受欢迎的

c++ performance time-series

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

如何将pandas DataFrame转换为TimeSeries?

我正在寻找一种方法将DataFrame转换为TimeSeries而不拆分索引和值列.有任何想法吗?谢谢.

In [20]: import pandas as pd

In [21]: import numpy as np

In [22]: dates = pd.date_range('20130101',periods=6)

In [23]: df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))

In [24]: df
Out[24]:
                   A         B         C         D
2013-01-01 -0.119230  1.892838  0.843414 -0.482739
2013-01-02  1.204884 -0.942299 -0.521808  0.446309
2013-01-03  1.899832  0.460871 -1.491727 -0.647614
2013-01-04  1.126043  0.818145  0.159674 -1.490958
2013-01-05  0.113360  0.190421 -0.618656  0.976943
2013-01-06 -0.537863 -0.078802  0.197864 -1.414924

In [25]: pd.Series(df)
Out[25]:
0    A
1    B
2    C
3    D
dtype: object
Run Code Online (Sandbox Code Playgroud)

python time-series pandas

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

在R plot arima拟合模型与原始系列

我在使用GRETL.在那里,当我对arima模型的验证进行预测时,我会得到蓝色系列的拟合系列和红色系列的原始系列.后来,我切换到R,在这里我找不到任何命令来做同样的事情.我正在使用预测包中的Arima模型.

细节,

在GRETL中,我用来做模型 - >时间序列 - > arima - >预测.它会自动打印合适的系列和原始系列.任何想法在R上做同样的事情?

r time-series

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

将移动平均线图添加到R中的时间序列图

我在ggplot2包中有一个时间序列图,我已经执行了移动平均线,我想将移动平均值的结果添加到时间序列图中.

数据集样本(p31):

ambtemp dt -1.14
2007-09-29 00:01:57
-1.12 2007-09-29 00:03:57 -1.33
2007-09-29 00:05:57
-1.44 2007-09-29 00:07:57
-1.54 2007-09-29 00:09:57
-1.29 2007-09-29 00:11:57

时间序列演示的应用代码:

  Require(ggplot2)
  library(scales)
  p29$dt=strptime(p31$dt, "%Y-%m-%d %H:%M:%S")
  ggplot(p29, aes(dt, ambtemp)) + geom_line() +
     scale_x_datetime(breaks = date_breaks("2 hour"),labels=date_format("%H:%M")) + xlab("Time 00.00 ~ 24:00 (2007-09-29)") + ylab("Tempreture")+
     opts(title = ("Node 29"))
Run Code Online (Sandbox Code Playgroud)

时间序列演示的样本 时间序列演示的样本

移动平均线图样本 在此输入图像描述 预期结果的样本

挑战在于时间序列数据ov =从数据集中获得,其中包括时间戳和温度,但移动平均数据仅包括平均列而不是时间戳,并且拟合这两者可能导致不一致.

预期成绩

r add time-series moving-average ggplot2

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

Python使用线性插值来规范不规则时间序列

我在熊猫中有一个时间序列,如下所示:

                     Values
1992-08-27 07:46:48    28.0  
1992-08-27 08:00:48    28.2  
1992-08-27 08:33:48    28.4  
1992-08-27 08:43:48    28.8  
1992-08-27 08:48:48    29.0  
1992-08-27 08:51:48    29.2  
1992-08-27 08:53:48    29.6  
1992-08-27 08:56:48    29.8  
1992-08-27 09:03:48    30.0
Run Code Online (Sandbox Code Playgroud)

我想将其重新采样到一个规则的时间序列,步长为15分钟,其中值是线性插值的.基本上我想得到:

                     Values
1992-08-27 08:00:00    28.2  
1992-08-27 08:15:00    28.3  
1992-08-27 08:30:00    28.4  
1992-08-27 08:45:00    28.8  
1992-08-27 09:00:00    29.9
Run Code Online (Sandbox Code Playgroud)

但是,使用Pandas的重采样方法(df.resample('15Min')),我得到:

                     Values
1992-08-27 08:00:00   28.20  
1992-08-27 08:15:00     NaN  
1992-08-27 08:30:00   28.60  
1992-08-27 08:45:00   29.40  
1992-08-27 09:00:00   30.00  
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的'how'和'fill_method'参数的重采样方法,但从未得到我想要的结果.我使用了错误的方法吗?

我认为这是一个相当简单的查询,但我在网上搜索了一段时间,但找不到答案.

提前感谢您提供的任何帮助.

python time-series linear-interpolation pandas

20
推荐指数
4
解决办法
9305
查看次数

如何使用data.table执行日期范围的连接?

如何使用data.table执行以下(直接使用sqldf)并得到完全相同的结果:

library(data.table)

whatWasMeasured <- data.table(start=as.POSIXct(seq(1, 1000, 100),
    origin="1970-01-01 00:00:00"),
    end=as.POSIXct(seq(10, 1000, 100), origin="1970-01-01 00:00:00"),
    x=1:10,
    y=letters[1:10])

measurments <- data.table(time=as.POSIXct(seq(1, 2000, 1),
    origin="1970-01-01 00:00:00"),
    temp=runif(2000, 10, 100))

## Alternative short names for data.tables
dt1 <- whatWasMeasured
dt2 <- measurments

## Straightforward with sqldf    
library(sqldf)

sqldf("select * from measurments m, whatWasMeasured wwm
where m.time between wwm.start and wwm.end")
Run Code Online (Sandbox Code Playgroud)

r time-series data.table

20
推荐指数
1
解决办法
4199
查看次数

熊猫重新采样开始日期

我想使用特定日期(或月份)作为第一个 bin 的边缘对 Pandas 对象重新采样。例如,在下面的代码片段中,我希望我的第一个索引值是2020-02-29,我很乐意指定start=2or start="2020-02-29"

>>> dates = pd.date_range("2020-01-29", "2021-07-04")
>>> s = pd.Series(range(len(dates)), index=dates)
>>> s.resample('4M').count()
2020-01-31      3
2020-05-31    121
2020-09-30    122
2021-01-31    123
2021-05-31    120
2021-09-30     34
Freq: 4M, dtype: int64
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我能想到的最干净的用途,pd.cut并且groupby

>>> rule = "4M"
>>> start = pd.Timestamp("2020-02-29") - pd.tseries.frequencies.to_offset(rule)
>>> end = s.index.max() + pd.tseries.frequencies.to_offset(rule)
>>> bins = pd.date_range(start, end, freq=rule)
>>> gb = s.groupby(pd.cut(s.index, bins)).count()
>>> gb.index = gb.index.categories.right
>>> gb
2020-02-29     32
2020-06-30 …
Run Code Online (Sandbox Code Playgroud)

python time-series dataframe pandas pandas-resample

20
推荐指数
2
解决办法
2012
查看次数

如何在时间序列数据上执行K-means聚类?

如何进行K-means聚类时间序列数据?我理解当输入数据是一组点时它是如何工作的,但我不知道如何用1XM聚类时间序列,其中M是数据长度.特别是,我不确定如何更新时间序列数据的集群平均值.

我有一组标记时间序列的,我想用K-means算法来检查我是否会得到一个类似的标签或没有.我的X矩阵将是NXM,其中N是时间序列的数量,M是如上所述的数据长度.

有谁知道如何做到这一点?例如,我如何修改这个k-means MATLAB代码,以便它适用于时间序列数据?此外,我希望能够使用欧几里德距离以外的不同距离指标.

为了更好地说明我的疑虑,这里是我为时间序列数据修改的代码:


% Check if second input is centroids
if ~isscalar(k) 
    c=k;
    k=size(c,1);
else
    c=X(ceil(rand(k,1)*n),:); % assign centroid randomly at start
end

% allocating variables
g0=ones(n,1); 
gIdx=zeros(n,1);
D=zeros(n,k);

% Main loop converge if previous partition is the same as current
while any(g0~=gIdx)
%     disp(sum(g0~=gIdx))
    g0=gIdx;
    % Loop for each centroid
    for t=1:k
        %  d=zeros(n,1);
        % Loop for each dimension
        for s=1:n
            D(s,t) = sqrt(sum((X(s,:)-c(t,:)).^2)); 
        end
    end
    % Partition data to closest centroids
    [z,gIdx]=min(D,[],2);
    % Update …
Run Code Online (Sandbox Code Playgroud)

matlab cluster-analysis time-series data-mining k-means

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

python pandas从时间序列中提取独特的日期

我有一个包含大量日内数据的DataFrame,DataFrame有几天的数据,日期不连续.

 2012-10-08 07:12:22            0.0    0          0  2315.6    0     0.0    0
 2012-10-08 09:14:00         2306.4   20  326586240  2306.4  472  2306.8    4
 2012-10-08 09:15:00         2306.8   34  249805440  2306.8  361  2308.0   26
 2012-10-08 09:15:01         2308.0    1   53309040  2307.4   77  2308.6    9
 2012-10-08 09:15:01.500000  2308.2    1  124630140  2307.0  180  2308.4    1
 2012-10-08 09:15:02         2307.0    5   85846260  2308.2  124  2308.0    9
 2012-10-08 09:15:02.500000  2307.0    3  128073540  2307.0  185  2307.6   11
 ......
 2012-10-10 07:19:30            0.0    0          0  2276.6    0     0.0    0
 2012-10-10 09:14:00         2283.2   80   98634240  2283.2 …
Run Code Online (Sandbox Code Playgroud)

python datetime time-series dataframe pandas

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

Python中最大亏损的开始,结束和持续时间

给定一个时间序列,我想计算最大亏损,我还想找到最大亏损的起点和终点,这样我就可以计算出持续时间.我想在这样的时间序列图上标记缩编的开始和结束:

一只忙碌的猫http://oi61.tinypic.com/r9h4er.jpg

到目前为止,我已经有了生成随机时间序列的代码,并且我已经有了计算最大亏损的代码.如果有人知道如何确定缩编开始和结束的地方,我真的很感激!

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# create random walk which I want to calculate maximum drawdown for:

T = 50
mu = 0.05
sigma = 0.2
S0 = 20
dt = 0.01
N = round(T/dt)
t = np.linspace(0, T, N)
W = np.random.standard_normal(size = N) 
W = np.cumsum(W)*np.sqrt(dt) ### standard brownian motion ###
X = (mu-0.5*sigma**2)*t + sigma*W 

S = S0*np.exp(X) ### geometric brownian motion ###
plt.plot(S)

# Max drawdown …
Run Code Online (Sandbox Code Playgroud)

python numpy time-series algorithmic-trading

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