Lcy*_*Lcy 6 python regression pandas
如何计算每列的滚动(窗口= 60)值的斜率(步长为5)?
我想每5分钟计算一次值,不需要每条记录的结果。
以下是示例数据框和结果:
df
Time A ... N
2016-01-01 00:00 1.2 ... 4.2
2016-01-01 00:01 1.2 ... 4.0
2016-01-01 00:02 1.2 ... 4.5
2016-01-01 00:03 1.5 ... 4.2
2016-01-01 00:04 1.1 ... 4.6
2016-01-01 00:05 1.6 ... 4.1
2016-01-01 00:06 1.7 ... 4.3
2016-01-01 00:07 1.8 ... 4.5
2016-01-01 00:08 1.1 ... 4.1
2016-01-01 00:09 1.5 ... 4.1
2016-01-01 00:10 1.6 ... 4.1
....
result
Time A ... N
2016-01-01 00:04 xxx ... xxx
2016-01-01 00:09 xxx ... xxx
2016-01-01 00:14 xxx ... xxx
...
Run Code Online (Sandbox Code Playgroud)
df.rolling函数可以应用于此问题吗?
NaN在窗口中很好,这意味着子集可以小于60。
小智 6
看来你想要的是以特定的步长滚动。但是,根据pandas 的文档,目前 .pandas中不支持步长rolling。
如果数据量不太大,只需对所有数据进行滚动并通过索引选择结果即可。
这是一个示例数据集。为简单起见,时间列使用整数表示。
data = pd.DataFrame(np.random.rand(500, 1) * 10, columns=['a'])
Run Code Online (Sandbox Code Playgroud)
a
0 8.714074
1 0.985467
2 9.101299
3 4.598044
4 4.193559
.. ...
495 9.736984
496 2.447377
497 5.209420
498 2.698441
499 3.438271
Run Code Online (Sandbox Code Playgroud)
然后滚动并计算坡度,
a
0 8.714074
1 0.985467
2 9.101299
3 4.598044
4 4.193559
.. ...
495 9.736984
496 2.447377
497 5.209420
498 2.698441
499 3.438271
Run Code Online (Sandbox Code Playgroud)
结果将是,
a
4 -0.542845
9 0.084953
14 0.155297
19 -0.048813
24 -0.011947
.. ...
479 -0.004792
484 -0.003714
489 0.022448
494 0.037301
499 0.027189
Run Code Online (Sandbox Code Playgroud)
或者,你可以参考这篇文章。第一个答案提供了一种 numpy 方法来实现此目的: pandas.DataFrame.rolling 中的步长
| 归档时间: |
|
| 查看次数: |
2303 次 |
| 最近记录: |