Roc*_*etq 8 python datetime python-2.7 pandas statsmodels
我以这种方式获得了时间序列数据:
from pandas.io.data import DataReader
from datetime import datetime
ts_log = DataReader('RUB=X', 'yahoo', datetime(2007,1,1), datetime(2016,8,30))["Adj Close"]
Run Code Online (Sandbox Code Playgroud)
ts_log看起来是这样的:
Date
2007-01-01 3.269759
2007-01-02 3.269759
2007-01-03 3.270519
..... ......
Run Code Online (Sandbox Code Playgroud)
然后,我想使用statsmodels进行分解:
from statsmodels.tsa.seasonal import seasonal_decompose
decomposition = seasonal_decompose(ts_log)
Run Code Online (Sandbox Code Playgroud)
ValueError:您必须指定频率或x必须是带有时间序列索引的pandas对象
为了解决这个问题,我尝试了两种方法:
1)这行不通,因为并非每天都有价值:
ts_log = pd.DataFrame(data=ts_log.values, index=pd.date_range(start=datetime(2007, 1, 1),
end = datetime(2016,8,30), freq='D'), columns=['usd/rub'])
Run Code Online (Sandbox Code Playgroud)
2)我认为将索引转换为datetime应该可以,但是不能:
ts_log = pd.DataFrame(data=ts_log.values, index=pd.to_datetime(ts_log.index), columns=['usd/rub'])
完全一样的错误。
我该如何使工作正常?
PS该代码非常好,但是我有一些不同的数据,无论如何它应该可以帮助您了解这个想法:
length = 400
x = np.sin(np.arange(length)) * 10 + np.random.randn(length)
df = pd.DataFrame(data=x, index=pd.date_range(start=datetime(2015, 1, 1), periods=length, freq='w'), columns=['value'])
decomposition = seasonal_decompose(df)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9810 次 |
最近记录: |