同一周数 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 年的滚动平均值的主要内容,如果未能解决你的问题,请参考以下文章

将 pandas iso 周数转换为常规周数

python中的财政周数

用于各种日期的 Python/Pandas 正则表达式 [重复]

动态计算截至该日期的财政年度结束和周数

Python从特定日期提取周数

如何在 R 中解析年 + 周数?