ローリングウィンドウでの集約(mean()
を使用)は、元の列と同じインデックスを持つpandasシリーズオブジェクトを返します。単純にローリングウィンドウを集計し、元の列を集計値で除算することができます。
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(30), columns=['A'])
df
# returns:
A
0 0
1 1
2 2
...
27 27
28 28
29 29
ローリング平均を使用して、同じインデックスのシリーズを得ることができます。
df.A.rolling(window=7).mean()
# returns:
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 3.0
7 4.0
...
26 23.0
27 24.0
28 25.0
29 26.0
それがインデックス化されているので、あなたが望む結果をdf.A
することにより、簡単な除算を取得することができます。
df.A.rolling(window=7).mean()/df.A
# returns:
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 0.500000
7 0.571429
8 0.625000
9 0.666667
10 0.700000
11 0.727273
12 0.750000
13 0.769231
14 0.785714
15 0.800000
16 0.812500
17 0.823529
18 0.833333
19 0.842105
20 0.850000
21 0.857143
22 0.863636
23 0.869565
24 0.875000
25 0.880000
26 0.884615
27 0.888889
28 0.892857
29 0.896552
詳細な説明をありがとうございます。これは機能するだけでなく、パンダを正しく使用する方法を理解するのに役立ちました。それは今、完全に意味をなさない。このような問題を多少処理する他の言語から来て、私はそれを前もって理解することができませんでした。 – Tony