我有两个numpy数组light_points和time_points,并希望对这些数据使用一些时间序列分析方法。时间序列分析 - 不均匀间隔的措施 - 熊猫+ statsmodels
然后我尝试这样做:
import statsmodels.api as sm
import pandas as pd
tdf = pd.DataFrame({'time':time_points[:]})
rdf = pd.DataFrame({'light':light_points[:]})
rdf.index = pd.DatetimeIndex(freq='w',start=0,periods=len(rdf.light))
#rdf.index = pd.DatetimeIndex(tdf['time'])
这工作,但没有做正确的事情。 事实上,测量是不是均匀的时间间隔,如果我只是宣布time_points大熊猫据帧作为我的帧的索引,我得到一个错误:
rdf.index = pd.DatetimeIndex(tdf['time'])
decomp = sm.tsa.seasonal_decompose(rdf)
elif freq is None:
raise ValueError("You must specify a freq or x must be a pandas object with a timeseries index")
ValueError: You must specify a freq or x must be a pandas object with a timeseries index
我不知道该如何纠正。 此外,似乎熊猫'TimeSeries
已弃用。
我尝试这样做:
rdf = pd.Series({'light':light_points[:]})
rdf.index = pd.DatetimeIndex(tdf['time'])
但它给了我一个长度不匹配:
ValueError: Length mismatch: Expected axis has 1 elements, new values have 122 elements
不过,我不明白它从何而来,为RDF [ '光']和 TDF [“时间”]是相同的长度...
最后,我想用我的定义RDF作为熊猫系列:
rdf = pd.Series(light_points[:],index=pd.DatetimeIndex(time_points[:]))
而且我得到这个:
ValueError: You must specify a freq or x must be a pandas object with a timeseries index
于是,我试着改为由
pd.TimeSeries(time_points[:])
替代指标,这让我对seasonal_decompose方法行错误:
AttributeError: 'Float64Index' object has no attribute 'inferred_freq'
如何处理不均匀间隔的数据? 我正在考虑通过在现有值之间添加许多未知值并使用插值来“评估”这些点来创建一个大致均匀间隔的时间数组,但我认为可能有一个更清晰和更简单的解决方案。
你会增加的变化得到一个很好的答案,如果你发布了一个[Minimal,Complete,and Verifiable example](http://stackoverflow.com/help/mcve) –