gpt4 book ai didi

python - 如何在python中每次找到最近52周销售额的平均值

转载 作者:行者123 更新时间:2023-11-28 16:25:41 25 4
gpt4 key购买 nike

我有一个包含四列的 csv 文件:日期、批发商、产品和销售额。我正在寻找每个日期每个产品和批发商组合的过去 52 周平均销售额。它表示过去 52 周内批发商“B”在时间“C”的产品“A”的平均先前销售额是多少。

例如,我们知道批发商“B”的产品“A”在 1 月、4 月、5 月、8 月的销售额分别为 100、200、300、400。假设我们在 1 月之前没有任何记录。那么批发商 'B' 的产品 'A' 在 4 月的平均销售量等于 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

现在我正在使用:

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

这给出了每个产品-批发商组合的先前销售额的总平均值(不是过去 52 周)。结果是:

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 周的平均销售额是多少。这意味着在某个日期,例如 11/6/2015,过去 52 周某个批发商的产品平均销售额是多少。感谢一百万的帮助!

最佳答案

考虑一个 apply 函数,它有条件地对每条记录的批发商和产品过去 52 周的销售额进行平均。如果没有解决方法,groupby() 会为组返回相同的值,而您需要一种运行组平均值,因此请尝试按系列处理。并确保将日期转换为日期时间格式,因为您可以使用 timedelta() 倒数 52 周。

import pandas as pd
import datetime

dateparse = lambda x: pd.datetime.strptime(x, '%m/%d/%Y')

df = pd.read_csv('Sample.csv', index_col='date',
parse_dates=[0], date_parser=dateparse)

def last52weeks(x):
ser = df['sales'][(df.index >= x.name - datetime.timedelta(weeks=52)) &
(df.index <= x.name) &
(df['wholesaler'] == x[0]) &
(df['product'] == x[1])]
return ser.mean()

df['avg_sales_last52weeks'] = df.apply(last52weeks, axis=1)
df = df.sort_values(['wholesaler', 'product'])

# wholesaler product sales avg_sales_last52weeks
# date
# 2013-12-31 11209 UME24 4 4.0
# 2012-12-31 13131 UPE55 1 1.0
# 2013-02-23 13131 UPE55 1156 578.5
# 2013-04-24 13131 UPE55 1 386.0
# 2013-12-18 52237 UPE54 9 9.0
# 2013-12-31 52237 UPE54 1 5.0
# 2013-12-19 53929 UME24 1 1.0
# 2012-12-31 53929 UPE54 4 4.0
# 2013-12-31 82204 UPE55 9 9.0
# 2013-12-01 83389 UPE54 9 9.0
# 2013-12-17 83389 UPE54 1 5.0

关于python - 如何在python中每次找到最近52周销售额的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36971489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com