相关疑难解决方法(0)

如何在前瞻性的基础上使用Pandas rolling_*函数

假设我有一个时间序列:

In[138] rng = pd.date_range('1/10/2011', periods=10, freq='D')
In[139] ts = pd.Series(randn(len(rng)), index=rng)
In[140]
Out[140]:
2011-01-10    0
2011-01-11    1
2011-01-12    2
2011-01-13    3
2011-01-14    4
2011-01-15    5
2011-01-16    6
2011-01-17    7
2011-01-18    8
2011-01-19    9
Freq: D, dtype: int64
Run Code Online (Sandbox Code Playgroud)

如果我使用其中一个rolling_*函数,例如rolling_sum,我可以获得我想要的向后看滚动计算的行为:

In [157]: pd.rolling_sum(ts, window=3, min_periods=0)
Out[157]: 
2011-01-10     0
2011-01-11     1
2011-01-12     3
2011-01-13     6
2011-01-14     9
2011-01-15    12
2011-01-16    15
2011-01-17    18
2011-01-18    21
2011-01-19    24
Freq: D, dtype: float64
Run Code Online (Sandbox Code Playgroud)

但是,如果我想做一个前瞻性的总和怎么办?我尝试过这样的事情:

In [161]: pd.rolling_sum(ts.shift(-2, freq='D'), window=3, min_periods=0)
Out[161]: 
2011-01-08     0
2011-01-09 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

Python:回顾n天滚动标准偏差

我有一个关于处理滚动标准偏差的问题:

数据框如下所示:

2010-01-20 05:00:00   -0.011
2010-01-20 05:02:00   -0.032
2010-01-20 05:02:00   -0.037
2010-01-20 05:04:00    0.001
2010-01-20 05:06:00    0.023
2010-01-20 05:06:00    0.011
2010-01-20 05:08:00    0.049
2010-01-20 05:10:00    0.102
....
2010-05-20 17:00:00    0.022
Run Code Online (Sandbox Code Playgroud)

这是从早上5点到下午5点的2分钟数据(索引'yyyy-mm-dd hh:mm:ss'的格式是日期戳)

我想计算标准偏差的8天回顾.我的直觉是将数据框分成每日数据集,然后计算滚动标准偏差,但我不知道如何处理这些索引,我想我的方法可能需要花费大量时间来计算.非常感谢你的帮助!

最后,我希望结果如下:

2010-01-20   0.0
2010-01-21   0.0
2010-01-22   0.0
....
2010-01-26   0.0
2010-01-27   0.12
2010-01-28   0.02
2010-01-29   0.07
...
2010-05-20   0.10
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.@unutbu

刚发现数据中的问题:数据框并不完全包含整个2分钟的数据.例如:

2010-01-21 15:08:00    0.044
2010-01-22 05:10:00    0.102
Run Code Online (Sandbox Code Playgroud)

数据于2010-01-21 15:08结束,2010-01-22 05:10:00开始.因此,使用常量设置窗口大小可能无法解决此问题.有什么建议?非常感谢

python pandas

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

标签 统计

pandas ×2

python ×2