だから私のデータセットには、次のようになります。パンダ - 移動平均 - 現在の行の前のXエントリの使用値
date,site,iso,id,hits
2017-08-25,google,1,7012,14225.0
2017-08-26,google,1,7012,14565.0
2017-08-27,google,1,7012,14580.0
2017-08-28,google,1,7012,14227.0
2017-08-29,google,1,7012,14568.0
2017-08-30,google,1,7012,14582.0
2017-08-31,google,1,7012,14214.0
2017-09-01,google,1,7012,14053.0
2017-08-25,facebook,2,7019,21225.0
2017-08-26,facebook,2,7019,21565.0
2017-08-27,facebook,2,7019,31580.0
2017-08-28,facebook,2,7019,13227.0
2017-08-29,facebook,2,7019,22568.0
2017-08-30,facebook,2,7019,44582.0
2017-08-31,facebook,2,7019,32214.0
2017-09-01,facebook,2,7019,44053.0
私はの以前 3日間を使ってヒットの3日移動平均を見つける必要がありますデータ。 は、私がこれまで行ってきたこれは何です:
#sort values
df_sorted = df.sort_values(['site', 'iso', 'id', 'date'], ascending=[1, 1, 1, 1])
#group
df_grouped_sorted = df_sorted.groupby(['site', 'iso', 'id'], as_index=False)
df_sorted['mov_av_hits'] = df_grouped_sorted[['hits']].rolling(3, min_periods=3).mean().fillna(0).reset_index(
0, drop=True)
そして今、私のデータセットには、次のようになります。
date,site,iso,id,hits,hits_avg
2017-08-25,google,1,7012,14225.0,14146.0
2017-08-26,google,1,7012,14565.0,14338.6666667
2017-08-27,google,1,7012,14580.0,14456.6666667
2017-08-28,google,1,7012,14227.0,14457.3333333
2017-08-29,google,1,7012,14568.0,14458.3333333
2017-08-30,google,1,7012,14582.0,14459.0
2017-08-31,google,1,7012,14214.0,14454.6666667
2017-09-01,google,1,7012,14053.0,14283.0
今、このアプローチの問題点は、hits
の現在の値が含まれていることです移動平均。
例えば、2017-09-01を参照してください。私はhits_avg
のために必要な値が(14568+14582+14214)/3 = 14454.6
ですが、私が取得することである(14582+14214+14053)/3 = 14283.0
どのように私は以前 3日からの値を取るために移動平均を得ることができますか?比較ウィンドウ一歩移動するシフトを追加する
機能があるかどうかを見てみましょう。多分シフト()を使用しない場合は? –