我正在使用数千个气象时间序列数据(可以从此处下载示例数据) https://dl.dropboxusercontent.com/s/bxioonfzqa4np6y/timeSeries.txt 在我的Linux Mint PC上使用GGPLOT2绘制这些数据(64位,8GB RAM,双核2.6 GHz)花了很多时间.我想知道是否有一种方法可以加快速度或绘制这些数据的更好方法?非常感谢您提出任何建议! 这是我现在正在使用的代码 ############################################################################## #### load required libraries library(RCurl) library(reshape2) library(dplyr) library(ggplot2) ####################################################
以下是关于 time-series 的编程技术问答
在多个项目中,我们必须存储,汇总,评估简单的测量值.一排在类型上由一个时间戳,一个值和值的某些属性组成.在某些应用中,我们希望每秒存储1000个值.这些值不仅必须插入,而且还必须以相同的速率删除,因为一个值的寿命仅限于一年左右(在不同的聚合步骤中,我们整整一年都不会存储1000/s). 到目前为止,我们已经开发了不同的解决方案.一种基于火鸟,一个基于甲骨文,另一种是一种自制的存储机构.但是这些都不是非常令人满意的解决方案. 两个RDBMS解决方案无法处理所需的数据流.除此之外,交付值(例如设备驱动程序)的应用程序无法轻松地附加到数据库上,插入语句很麻烦.最后,虽然非常需要具有SQL接口到数据,但很难在SQL中制定典型的评估,并且执行缓慢.例如.在上个月的所有测量中找到每15分钟的时间戳记的最大值. 自制解决方案可以处理插入率,并且具有客户友好的API来执行此操作,但是它没有像查询语言那样的语言,其他应用程序无法通过某些标准接口(例如.用于报告. 我梦中最好的解决方
我需要提取给定窗口的时间序列/数组的所有子序列.例如: >>> ts = pd.Series([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> window = 3 >>> subsequences(ts, window) array([[0, 1, 2], [1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [5, 7, 8], [6, 8, 9]]) 在序列上迭代的天真方法当然很昂贵,例如: def subsequences(ts, window): res = [] for i in range(ts.size - window + 1): subts = ts[i:i+window] subts.reset_index(drop=True,
我有一个具有各种属性的数据框,包括一个DateTime列.我想将属性列之一提取为由DateTime列索引的时间序列.这似乎很简单,我可以像所有熊猫文档所显示的那样构建具有随机值的时间序列.但是,当我从数据框架中这样做时,我的属性值都转换为NAN. 这是一个类似的例子. df = pd.DataFrame({'a': [0,1], 'date':[pd.to_datetime('2017-04-01'), pd.to_datetime('2017-04-02')]}) s = pd.Series(df.a, index=df.date) 在这种情况下,该系列将具有正确的时间序列索引,但所有值将为NAN. 我可以分两个步骤完成该系列,但我不明白为什么需要这这是需要的. s = pd.Series(df.a) s.index = df.date 我想念什么?我认为这与串联参考有关,但根
我有一个包含年度列,朱利安日,小时和温度的数据集.我已经按日常和一天对数据进行了分组,如果每天包含24小时的数据,现在想对温度数据进行操作.然后,我想用年,朱利安日,最高温度和最小温度创建一个数据框架.但是,我不确定语法以确保满足这种情况.任何帮助,将不胜感激.我的代码如下: df = pd.read_table(data,skiprows=1,sep='\t',usecols=(0,3,4,6),names=['year','jday','hour','temp'],na_values=-999.9) g = df.groupby(['year','jday']) if #the grouped year and day has 24 hours worth of data maxt = g.aggregate({'temp':np.max}) mint = g.aggregate({'temp':np.min}) else: continue 和一
对于时间序列分析,具有滚动PCA函数以分析时间序列的动态如何随时间变化为 避免往外偏见 . 我们可能想回答以下问题:"需要多少个原理组件来保持差异的90%?".解释90%方差的原理组件数量可能会随着时间序列的动态而变化. 此外,我们可能希望将给定数据集中的组件p数减少到滚动基础上的k scikit具有 numpy svd .我们可以在手册中使用这些软件包进行循环,但是对于大阵列(> 10,000行),它会变得非常慢. 是否有快速滚动在Python中实现PCA以解决上述一些问题? 解决方案 虽然我没有设法找到PCA的滚动实现,但是使用问题中提到的软件包和工具来编码手动滚动PCA功能是相对简单的事情.此外,我们还将使用 numpy.linalg.svd and 此答案中的代码的灵感来自PCA 在这里和在这里 import numpy as np from numpy.linalg import eig from numba import njit impor
我正在研究时间序列数据.可用的数据是多变量的.因此,在每种时间的情况下,都有三个可用的数据点. 格式: | X | y | z | 因此,将实时生成以上格式的一个时间序列数据.我试图在另一个时间序列的基本数据中找到这个实时生成的时间序列的良好匹配,该时间序列已经存储(大小要大得多,并且以不同的频率收集).如果我单独将标准DTW应用于系列(X,Y,Z)中的每个系列(X,Y,Z),他们最终可能会在基本数据库中的不同点进行匹配,这是不利的.因此,我需要在基本数据库中找到一个点,其中所有三个组件(x,y,z)都匹配良好,并且在同一点. 我已经研究了此事,发现多维DTW是解决此类问题的完美解决方案.在R中,DTW软件包确实包括多维DTW,但我必须在Python中实现它. R-Python桥接软件包,即" rpy2"可能在这里有帮助,但我在R上没有经验.我已经浏览了Python的可用DTW软件包,如Mlpy,DTW,但无济于事.任何人都可以建议使用rpy2中的python中的包装进
我是卡桑德拉(Cassandra)的新手,我刚刚通过DataStax课程了解了它,但是我在此处或Internet上没有找到足够的信息,在我的应用程序中,我需要使用存储桶来拆分数据. 我有一些乐器可以做出很多措施,每天将这些措施(作为分区密钥)分开的措施可能有些风险,因为我们可以轻松地达到分区的100MB极限.每种措施都涉及具有ID标识的特定对象.所以我想使用一个水桶,但我不知道该怎么做. 我正在使用Cassandra 3.7 这是我的桌子的外观: CREATE TABLE measures ( instrument_id bigint, day timestamp, bucket int, measure_timestamp timestamp, measure_id uuid, measure_info float, object_id bigint, PRIMARY KEY ((instrument_id, day, bucke
我想使用C3.js使用格式2015-09-17 18:20:34和格式字符串'%Y-%m-%d %H:%M:%S'的时间序列图表,但无法解析. 我的代码: var chart = c3.generate({ bindto: '#chart', data: { x: 'times', columns: [ ['times','2015-09-17 18:20:34','2015-09-17 18:25:42','2015-09-17 18:30:48'], ['data','1539','1546','1546','1550'] ] }, axis: { x: { type: 'timeseries', tick: { format: '%Y-%m-%d %H:%M:%S'
我有熊猫DF: Reading 2016-06-01 09:00:00+09:00 1190.958 2016-06-01 10:30:00+09:00 1189.886 2016-06-01 12:00:00+09:00 1194.089 2016-06-01 13:30:00+09:00 1193.464 2016-06-01 15:00:00+09:00 1193.050 2016-06-02 09:00:00+09:00 1190.879 2016-06-02 12:00:00+09:00 1190.025 2016-06-02 13:30:00+09:00 1187.057 2016-06-02 15:00:00+09:00 1186.600 我想这样改变它: 09:00
我有以下数据集: Name Loc Site Date Total Alex Italy A 12.31.2020 30 Alex Italy B 12.31.2020 40 Alex Italy B 12.30.2020 100 Alex Italy A 12.30.2020 80 Alex France A 12.28.2020 10 Alex France B 12.28.2020 20 Alex France B 12.27.2020 10 我想在每行添加每行的平均值,在每个名称,loc和日期 的日期之前的总数 这是我正在寻找的结果: Name Loc Site Date Total Prv_Avg Alex Italy A 12.31.2020 30 9
这个问题已经用R解决了,但是我还没有看到Python有用的示例.我想学习如何将数据转换为日历年(1/1/1990到2010年12月31日)将数据转换为水年数据(即10/01/1990到9/31/2010).谢谢您的帮助. 解决方案 使用来自 USGS 033335500 Wabash River in 日期:2001-10-01-2017-09-31 'datetime'列必须通过用parse_dates导入数据或在导入数据后使用pd.to_datetime()来设置为a datetime dtype. 使用 使用提取month和year数字. 如果月号小于10,则水年为.dt.year,否则,水年为.dt.year + 1 答案对于282757 282757行中的快13倍. import pandas as pd # Load the data df = pd.read_csv('WabashRiver_Flow.csv', parse_dates=
我有以下一般格式的数据,我想将其重新采样为30天的时间序列: 'customer_id','transaction_dt','product','price','units' 1,2004-01-02,thing1,25,47 1,2004-01-17,thing2,150,8 2,2004-01-29,thing2,150,25 3,2017-07-15,thing3,55,17 3,2016-05-12,thing3,55,47 4,2012-02-23,thing2,150,22 4,2009-10-10,thing1,25,12 4,2014-04-04,thing2,150,2 5,2008-07-09,thing2,150,43 我希望30天的窗户在2014-01-01开始,并于2018年12月31日结束.不能保证每个客户在每个窗口中都有记录.如果客户在窗口中有多次交易,则需要价格的加权平均值,总结单位并限制产品名称,以每个窗口每个客户创建一个记录. 到目前为
我成功地设法刮擦了futbin.com,以获取FIFA 19玩家的时间序列价格数据.现在,我拥有超过200万行的玩家和价格数据.对于每个玩家,我的价格大约有17个不同的价格(带有各自的时间戳) 我现在想制作一个新的数据框,每个播放器只有一排,而且价格应该是该特定玩家的平均价格.每个玩家都有一个唯一的" futbin_id"号码. 到目前为止,我一直无法弄清楚如何做到这一点... 如果有人能帮助我,我真的很感激... 解决方案 您将要通过fubin_id进行分组,然后找到每个分组的平均值: avg_price = df_ts.groupby('Futbin_ID')['price'].agg(np.mean) 如果您也想将数据框架与其他列一起使用,则可以将重复项放在原始列中,而不是第一个,然后将价格值替换为平均值: : df_ts.drop_duplicates(subset="Futbin_ID", keep="first", inplace= True)
我有一个数据集,如下所示.这个想法是查看所有前15分钟,而不是我们在石斑鱼功能中使用的频率.我想看看前15分钟的积极变化数量. row Timestamp Direction Positive Neg Nut 1 1/20/19 12:15 2 1/20/19 12:17 Nut 3 1/20/19 12:17 Neg 4 1/20/19 12:18 Neg 5 1/20/19 12:19 Pos 6 1/20/19 12:20 Neg 7 1/20/19 12:21 Neg 8 1/20/19 12:22 Pos 9 1/20/19 12:23 Neg 10 1/20/19 12:24 Pos 11 1/20/19 12:25 Neg 12 1/20/19 12:26
我在python pandas dataframe对象中有一个时间序列,我想根据索引创建一个组,但我希望重叠的组,即组并不明显. header_sec是索引列. 每个组都由2秒的窗口组成. 输入dataframe header_sec 1 17004 days 22:17:13 2 17004 days 22:17:13 3 17004 days 22:17:13 4 17004 days 22:17:13 5 17004 days 22:17:14 6 17004 days 22:17:14 7 17004 days 22:17:14 8 17004 days 22:17:14 9 17004 days 22:17:15 10 17004 days 22:17:15 11 17004 days 22:17:15 12 17004 days 22:17:15 13 17004 days 22:17:16 14 17004 days 22:17:16
我有一个数据框架,基本上是几个时间表彼此堆叠.每个时间序列都有一个唯一的标签(组),并且它们的日期范围不同. date = pd.to_datetime(pd.Series(['2010-01-01', '2010-01-02', '2010-01-03', '2010-01-06', '2010-01-01', '2010-01-03'])) group = [1,1,1,1, 2, 2] value = [1,2,3,4,5,6] df = pd.DataFrame({'date':date, 'group':group, 'value':value}) df date group value 0 2010-01-01 1 1 1 2010-01-02 1 2 2 2010-01-03 1 3 3 2010-01-