是否有任何无损压缩方法可以应用于浮点时间序列数据,并且将显着优于比如将数据作为二进制文件写入文件并通过gzip运行?
降低精度可能是可以接受的,但它必须以受控方式发生(即我必须能够设置必须保留多少位数的界限)
我正在处理一些大型数据文件,这些文件是一系列相关的double
s,描述了时间的函数(即值是相关的).我通常不需要完全double
精确但我可能需要更多float
.
由于图像/音频有专门的无损方法,我想知道是否存在任何专门用于这种情况的方法.
澄清: 我正在寻找现有的实用工具,而不是描述如何实现这样的东西的论文.在速度上与gzip相当的东西会很棒.
鉴于以下pandas DataFrame:
In [115]: times = pd.to_datetime(pd.Series(['2014-08-25 21:00:00','2014-08-25 21:04:00',
'2014-08-25 22:07:00','2014-08-25 22:09:00']))
locations = ['HK', 'LDN', 'LDN', 'LDN']
event = ['foo', 'bar', 'baz', 'qux']
df = pd.DataFrame({'Location': locations,
'Event': event}, index=times)
df
Out[115]:
Event Location
2014-08-25 21:00:00 foo HK
2014-08-25 21:04:00 bar LDN
2014-08-25 22:07:00 baz LDN
2014-08-25 22:09:00 qux LDN
Run Code Online (Sandbox Code Playgroud)
我想重新采样数据按小时按计数聚合,同时按位置分组以生成如下所示的数据框:
Out[115]:
HK LDN
2014-08-25 21:00:00 1 1
2014-08-25 22:00:00 0 2
Run Code Online (Sandbox Code Playgroud)
我尝试了resample()和groupby()的各种组合,但没有运气.我该怎么做?
我试图弄清楚这些新的数据存储如bigtable,hbase和cassandra到底是什么.
我处理大量的股票市场数据,数十亿行价格/报价数据,每天可以累计达到100千兆字节(尽管这些文本文件通常压缩至少一个数量级).这个数据基本上是一些数字,两个或三个短字符串和一个时间戳(通常是毫秒级).如果我必须为每一行选择一个唯一的标识符,我将不得不选择整行(因为交换可能会在同一毫秒内为同一个符号生成多个值).
我想将这些数据映射到bigtable(我包括它的衍生物)的最简单方法是按符号名称和日期(这可能会返回一个非常大的时间序列,超过百万个数据点并非闻所未闻).通过阅读他们的描述,看起来这些系统可以使用多个密钥.我还假设十进制数不是键的好选择.
其中一些系统(例如Cassandra)声称能够进行范围查询.在给定的一天,上午11:00到下午1:30之间,我是否能够有效地查询MSFT的所有值?
如果我想搜索给定日期的所有符号,并请求价格在10美元到10.25美元之间的所有符号,那么该怎么办?所以我正在搜索这些值,并希望返回键作为结果?
如果我想得到两个系列,从另一个中减去一个,并返回两次系列及其结果,我将在自己的程序中做他的逻辑怎么办?
阅读相关论文似乎表明这些系统不适合大规模时间序列系统.但是,如果谷歌地图等系统基于它们,我认为时间序列也应该有效.例如,将时间视为x轴,将价格视为y轴,将符号视为命名位置 - 突然之间看起来像bigtable应该是时间序列的理想存储(如果整个地球可以存储,检索,放大和注释,股市数据应该是微不足道的).
有些专家可以指出我正确的方向或澄清任何误解.
谢谢
我有一个巨大的HDFS文件,有时间序列数据点(雅虎股票价格).
我想找到时间序列的移动平均值我如何编写Apache Spark工作来做到这一点.
我目前正在处理带有R的刻度数据,我想将日期和时间合并到一个对象中,因为我需要获得一个精确的时间对象来计算我的数据的一些统计数据.以下是我的数据的样子:
date time price flag exchange
2 XXH10 2010-02-02 08:00:03 2787 1824 E
3 XXH10 2010-02-02 08:00:04 2786 3 E
4 XXH10 2010-02-02 08:00:04 2787 6 E
5 XXH10 2010-02-02 08:00:04 2787 1 E
6 XXH10 2010-02-02 08:00:04 2787 1 E
Run Code Online (Sandbox Code Playgroud)
基本上,我想将"date"和"time"列合并为一个.
很可能会暴露我是R的新手,但在SPSS中,运行滞后非常容易.显然这是用户错误,但我缺少什么?
x <- sample(c(1:9), 10, replace = T)
y <- lag(x, 1)
ds <- cbind(x, y)
ds
Run Code Online (Sandbox Code Playgroud)
结果是:
x y
[1,] 4 4
[2,] 6 6
[3,] 3 3
[4,] 4 4
[5,] 3 3
[6,] 5 5
[7,] 8 8
[8,] 9 9
[9,] 3 3
[10,] 7 7
Run Code Online (Sandbox Code Playgroud)
我想我会看到:
x y
[1,] 4
[2,] 6 4
[3,] 3 6
[4,] 4 3
[5,] 3 4
[6,] 5 3
[7,] 8 5
[8,] 9 8
[9,] 3 9
[10,] …
Run Code Online (Sandbox Code Playgroud) Scikit-learn采用了一种非常方便的方法fit
和predict
方法.我有适合fit
和的格式的时间序列数据predict
.
例如,我有以下内容Xs
:
[[1.0, 2.3, 4.5], [6.7, 2.7, 1.2], ..., [3.2, 4.7, 1.1]]
Run Code Online (Sandbox Code Playgroud)
和相应的ys
:
[[1.0], [2.3], ..., [7.7]]
Run Code Online (Sandbox Code Playgroud)
这些数据具有以下含义.存储的值ys
形成时间序列.值Xs
是对应的时间相关"因子",已知这些因素对值ys
(例如:温度,湿度和大气压力)有一些影响.
现在,当然,我可以使用fit(Xs,ys)
.但后来我得到了一个模型,其中未来的值ys
仅依赖于因子,并且不依赖于先前的Y
值(至少直接),这是模型的限制.我想有其中一个模型Y_n
也依赖Y_{n-1}
和Y_{n-2}
等.例如,我可能想使用指数移动平均线作为模型.在scikit-learn中最优雅的方法是什么
添加
正如评论中提到的那样,我可以Xs
通过添加来扩展ys
.但这种方式有一些局限性.例如,如果我将最后5个值添加y
为5个新列X
,则有关时间排序的信息ys
将丢失.例如,没有迹象表明X
第5列中的值跟随第4列中的值,依此类推.作为一个模型,我可能希望得到最后五个的线性拟合,ys
并使用找到的线性函数进行预测.但如果我在5列中有5个值,那就不是那么简单了.
增加2
为了使我的问题更加清楚,我想举一个具体的例子.我想有一个"线性"模型y_n = c + k1*x1 + k2*x2 + k3*x3 + k4*EMOV_n
,其中EMOV_n只是一个指数移动平均线.怎样,我可以在scikit-learn中实现这个简单的模型吗?
如何JFreeChart
在不断更新的时间序列中仅显示最新数据?
附录:此处显示了一个包含已接受答案的完整,有效的示例.另见具有两个系列的该变体.另见本Q&A有关setTimeBase()
.
我在R中有一个带有多个向量的时间序列对象.我想计算每个向量在每个时间点(保存t = 1,显然是NA)的周期百分比变化.
> data <- ts(data.frame(x1=c(1:10), x2=c(11:20), x3=c(21:30)), start = c(2010,3), frequency = 4)
> data
x1 x2 x3
2010 Q3 1 11 21
2010 Q4 2 12 22
2011 Q1 3 13 23
2011 Q2 4 14 24
2011 Q3 5 15 25
2011 Q4 6 16 26
2012 Q1 7 17 27
2012 Q2 8 18 28
2012 Q3 9 19 29
2012 Q4 10 20 30
Run Code Online (Sandbox Code Playgroud) 我有一个numpy形状(6,2)
[[00,01],
[10,11],
[20,21],
[30,31],
[40,41],
[50,51]]
Run Code Online (Sandbox Code Playgroud)
我需要一个步长为1的滑动窗口,窗口大小为3喜欢这个:
[[00,01,10,11,20,21],
[10,11,20,21,30,31],
[20,21,30,31,40,41],
[30,31,40,41,50,51]]
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个numpy解决方案.如果您的解决方案可以参数化原始数组的形状以及窗口大小和步长,那就太好了.
我发现这个相关的答案使用步幅有效的移动平均滤波器,但我没有看到如何指定那里的步长以及如何将窗口从3d折叠到连续的2d数组.这个滚动或滑动窗口迭代器在Python中,但是在Python中,我不确定它的效率如何.此外,它支持元素,但如果每个元素具有多个特征,则最终不会将它们连接在一起.
time-series ×10
python ×3
r ×3
finance ×2
apache-spark ×1
bigtable ×1
cassandra ×1
compression ×1
dynamic ×1
group-by ×1
hbase ×1
hdfs ×1
java ×1
jfreechart ×1
numpy ×1
pandas ×1
scikit-learn ×1
statistics ×1
xts ×1
zoo ×1