pandas 一周中同一天的数据平均值

pandas mean of the data within the same day of week

我有一个从 2016 年到 2019 年的数据框,显示了一种商品每天的生产数量。我已将时间设置为索引并将其转换为 date_time 格式。

      Time         #Produced products     
    2016-03-26    274
    ....
    2017-03-26    123
    2017-02-27    245
    ....
    2018-03-26    282
    ....
    2019-03-23    296

现在,我想找到这些年来的平均日产量,但要以一种了解工作日的方式进行。因此,由于我们一年有 52 周,因此输出指标将是:第一个星期一、第一个星期二、....、第 52 个星期六、第 52 个星期日。 对于每个指数,它应该找到 2016-2019 年产生的数字的平均值。

我想我应该使用 groupby month 和 groupby dayofweek 之类的东西 我不知道如何实施。你能指导我吗?

您可以使用 apply 函数和辅助函数 -

将另一列添加到数据框中

*此辅助函数假定 Time 列中的所有条目均采用 python datetime 格式

def helper(my_date_time):
    week_list = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday','Sunday']
    week_number = my_date_time.isocalendar()[1]
    week_day = week_list[my_date_time.isocalendar()[2] - 1]
    return (week_day + str(week_number))

获得辅助函数后,您可以修改数据框以在另一列中包含工作日和周数-

df['week_number_day'] = df['Time'].apply(helper)

然后你可以用它来找到你需要的平均值

grouped_df = df.groupby("week_number_day")
mean_df = grouped_df.mean()
mean_df = mean_df.reset_index()
print(mean_df)