同一周数 Python Pandas 过去 3 年的滚动平均值
Posted
技术标签:
【中文标题】同一周数 Python Pandas 过去 3 年的滚动平均值【英文标题】:Rolling Average for last 3 years for same week number Python Pandas 【发布时间】:2019-09-04 22:02:15 【问题描述】:只要有可用的数据,例如 201932,我就会使用 201632、201732 和 201832 的数据的平均值来查找同一周的平均值。示例:2019 年是年份,32 是周数
【问题讨论】:
Rolling average all values of pandas DataFrame的可能重复 【参考方案1】:通用示例,未完全测试,您可以根据需要进行更新,请原谅语法/编译错误
# 1 load your data here
myYearlyWeekAvgList = [[Calendar, WkNumber, France, 0, 201538], [....]]
# 2 initialize variables here
totalSum = 0
movingAves = 0 # track total for that yr
myYear = currentYear # input, for e.g. 2018
# 3 start totals & averages here
for i, x in enumerate(myYearlyWeekAvgList, 1):
T = x[i] # get each row
if x == currentYear # for e.g. if yr is 2018, then sum value
totalSum.append(T[3]) # your revenue in 3rd col I guess
moving_ave = totalSum/i # your average for that col
【讨论】:
【参考方案2】:import pandas as pd
import datetime as datetime
df['Calender Week'] = pd.to_datetime(df['Calender Week'] + '-0', format = '%Y%W-%w')
df.groupby([df['C'], df['Calender Week'].dt.week])['Revenue'].mean()
这就是你想要的。首先,您必须将“日历周”列更改为日期时间。在转换中,我必须添加一个“-0”才能正确转换。它所做的只是决定一周是从星期日还是星期一开始,这在我们的例子中并不重要。
在第二行中,我们使用 groupby。我们按国家和实际日历周(1 到 52)分组,由 .dt.week
表示。我们查看收入列,最后取平均值。
我随机创建的测试数据的结果如下所示:
C Calender Week
France 50 16.50
51 25.00
52 30.00
USA 50 14.00
51 13.25
52 30.50
【讨论】:
以上是关于同一周数 Python Pandas 过去 3 年的滚动平均值的主要内容,如果未能解决你的问题,请参考以下文章