Python 如何根据周数据计算月SMA?
我有一个Python 如何根据周数据计算月SMA?,python,pandas,numpy-ndarray,Python,Pandas,Numpy Ndarray,我有一个数据框,包含100个键(第1列)和6个月数据(从1月到6月,列格式为2019年1月到2019年1月到2019年1月、2019年1月到2019年1月到6月等)。议程是使用过去6个月的简单移动平均值预测未来3个月(从7月到9月)。例如,对于7月1日的预测,移动平均值应使用2019年1月1日、2019年2月1日、2019年3月1日、2019年4月1日、2019年5月1日和2019年6月1日进行计算。 问题是如何有效且快速地计算此操作? 目前我使用的For循环占用了大量的时间 我已经尝试过使用f
数据框
,包含100个键(第1列)
和6个月
数据(从1月到6月,列格式为2019年1月到2019年1月到2019年1月、2019年1月到2019年1月到6月等)
。议程是使用过去6个月的简单移动平均值预测未来3个月(从7月到9月)
。例如,对于7月1日的预测,移动平均值应使用2019年1月1日、2019年2月1日、2019年3月1日、2019年4月1日、2019年5月1日和2019年6月1日进行计算。
问题是如何有效且快速地计算此操作?
目前我使用的For循环占用了大量的时间
我已经尝试过使用for循环,但它占用了大量的时间
counter=1
for keyIndex in range(0,len(finalForecastingData)):
print(keyIndex)
for forcastingMonthsIndex in range(31,columns):
finalForecastingData.iloc[keyIndex,forcastingMonthsIndex] = finalForecastingData.iloc[keyIndex,counter]+finalForecastingData.iloc[keyIndex,counter+5]+finalForecastingData.iloc[keyIndex,counter+10]+finalForecastingData.iloc[keyIndex,counter+15]+finalForecastingData.iloc[keyIndex,counter+20]
counter = counter+1
counter=1
欢迎来到stackoverflow
使用pandas.rolling('60d').mean()
可以很容易地得到滚动平均值。为此,您需要使用pd.to\u Datetime()
将时间数据转换为Datetime
格式,并使用set\u index()
将其设置为索引
你也应该退房。给出示例数据真的很有帮助。使用样例数据框,给你具体的代码要容易得多,而不是看方向。但是滚动不会考虑中间值,对吗?我的意思是计算第31列的7月1日的SMA……我们必须将1月1日与2月、3月、4月、5月和6月1日相加,它们位于位置1、5、10、15、20、25……它们不是连续使用滚动的……如果我理解正确,您需要将日期分为月和周数,groupby('weeknumber'))
应该完成这项工作。但是,请创建一个示例数据框和所需的输出。要预测的产品:-ABC香波。应使用最近2个月的SMA进行预测。预测将在3月份第1周完成。给出了2个月(1月和2月)的数据,但数据采用的是周格式,如2019年1月1日、2019年1月2日2019年1月3日、2019年1月4日2019年2月1日、2019年2月2日、2019年2月3日、2019年2月4日(考虑这些是excel中的列),目标是找到2019年3月1日和2019年2月1日的平均值。我不能使用滚动功能,因为2019年1月1日和2019年2月1日之间还有其他周的信息。