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)
我有一个从 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)