首页 > 解决方案 > 大熊猫一周中同一天的数据平均值

问题描述

我有一个从 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 之类的东西,我不知道如何实现它。你能指导我吗?

标签: pythonpandasdataframedatetimedayofweek

解决方案


您可以做的是使用apply函数和辅助函数向数据框添加另一列 -

*此辅助函数假定Time列中的所有条目都是 pythondatetime格式

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)

推荐阅读