私は日付、卸売業者、製品、販売の4つの列を持つcsvファイルを持っています。私は、各製品と卸売業者の組み合わせごとに、過去52週間の売上の平均を各日付ごとに求めています。これは、過去52週間の時間「C」における卸売業者「B」における製品「A」の前回の平均販売額を意味する。Pythonで毎回過去52週間の売上げの平均を見つけるには
たとえば、1月、4月、5月、8月の卸売業者Bでの製品「A」の販売数がそれぞれ100,200,300,400であることがわかっています。 Janの前にはレコードがないと仮定してください。したがって、4月の卸売業者Bの前回の製品Aの平均販売価格は100/1、5月は(200 + 100)/ 2、 8月の(300 + 200 + 100)/ 3です。
date wholesaler product sales
12/31/2012 53929 UPE54 4
12/31/2012 13131 UPE55 1
2/23/2013 13131 UPE55 1156
4/24/2013 13131 UPE55 1
12/1/2013 83389 UPE54 9
12/17/2013 83389 UPE54 1
12/18/2013 52237 UPE54 9
12/19/2013 53929 UME24 1
12/31/2013 82204 UPE55 9
12/31/2013 11209 UME24 4
12/31/2013 52237 UPE54 1
今、私が使用しています:各製品-問屋の組み合わせのため、以前の売上高の合計平均(最後のない52週間)を与える
df = pd.read_csv('Sample.csv',index_col='date')
expd_gb = df.reset_index().groupby(['wholesaler', 'product'])['sales'].apply(pd.Series.expanding)
idx = df.reset_index().groupby(['wholesaler', 'product', 'date'])['sales'].count().index
cnct = pd.concat([expd_gb.iloc[n].mean().shift(1) for n in range(len(expd_gb))])
cnct.index = idx
次の表は、私のデータを示しています。結果は次のとおりです。
wholesaler product date
11209 UME24 12/31/2013 NaN
13131 UPE55 12/31/2012 NaN
2/23/2013 1.0
4/24/2013 578.5
52237 UPE54 12/18/2013 NaN
12/31/2013 9.0
53929 UME24 12/19/2013 NaN
UPE54 12/31/2012 NaN
82204 UPE55 12/31/2013 NaN
83389 UPE54 12/1/2013 NaN
12/17/2013 9.0
時間が経過するにつれて、売上レコードの反復が増えています。私は最後の52週間の売上の平均が何かを調べる必要があります。これは、特定の日付(例えば、2015年11月6日)を意味します。これは、過去52週間の特定の卸売業者での製品の平均販売額を意味します。あなたの助けに100万こんにちは!
ありがとうございます!それは素晴らしいです!'timedelta()'関数がより速く動作すると思いますか?実際には2500万行以上を計算する必要があり、結果を見つけるための最速の方法を見つけたいと考えています。もう一度あなたの優雅なコードをありがとう! – Ashkan
うわー!かなりのデータセット。日付の平均および索引表を実行するための条件付き集約照会を使用するデータベースSQLソリューションを考えてみましょう。次にパンダに輸入する。 – Parfait
コメントありがとうございました!それは良いアイデアです。 – Ashkan