首页 > 解决方案 > 平均每天的产出(周一、周二等)

问题描述

目前我有一个包含数千行的 csv 文件。每行显示日期和时间,但不按升序排列。如何根据天数(周一、周二、周三等)计算事件/发生的数量?此外,它应该是每天的平均发生次数。例如,每个星期一的平均出现次数是 712,每个星期二是 853,等等。

到目前为止,我设法使用该行添加了相应日期的列

df['DAY'] = pd.to_datetime(df['DATE']).dt.day_name()

前 10 行 ,但我不知道如何继续使用 Python 生成包含每天平均出现次数(周一、周二等)的输出。

输出应显示:[周一平均值为周二平均值为周三等]

标签: pythonpandasaverage

解决方案


返回具有指定语言环境的 DateTimeIndex 的日期名称 Monday-Sunday

df['DAY'] = pd.to_datetime(df['DATE']).dt.day_name()

如果您还没有要聚合的列,请创建一个列来表示发生的实例:

#I'm assuming each day refers to a unique "instance" or occurrence 
#but this does not have to follow if you already have a column to count/aggregate
df['OCCURENCE'] = 1

要返回,给定日期的平均出现次数只需使用 groupby 语句并指定您想要平均的组:

group_df = df.groupby('DAY')['OCCURENCE'].mean()

为了满足将所有内容都放在列表中的奇怪格式要求

output_list = []
for day in group_df.index:
    avg = group_df.loc[day][0]
    str_format = 'average for {d}:{v}'.foramt(d=day, v=avg) 
    output_list.append(str_format)

new_list = ' '.join(output_list)

推荐阅读