我有一个名为“ Work.csv”的csv文件。一个人在十月份登记工作的时间(条目很多)。
MONTH YEAR DATE TIME
Oct 2011 20/10/2011 22:04:52
Oct 2011 26/10/2011 11:15:16
Oct 2011 11/10/2011 10:52:52
Oct 2011 11/10/2011 16:40:06
我希望找到每个小时间隔内注册工作的平均人数。例如。从12am到1am,从1am到2am ...等的平均注册人数。
我使用dt.hour尝试了自己的代码,但只设法获得了特定小时内总人数的频率计数。
我似乎无法获得平均值。
我想要的输出是:
Hour Average Number of People
0 40
1 50
2 65
3 30
4 30
请帮助!
答案 0 :(得分:1)
首先,您应该将TIME列转换为DateTime。然后按时间和日期分组,以找出每个小时中每个日期有多少人工作。最后,再次按小时分组并得出平均值:
df.groupby([pd.to_datetime(df.TIME).dt.hour, df.DATE]).size()\ # raw counts
.groupby('TIME').mean() # mean counts
#TIME
#10 1
#11 1
#16 1
#22 1
由于@Wen(总是有帮助),因此它是一种更紧凑(可能效率更低)的选项:
df.groupby([pd.to_datetime(df.TIME).dt.hour, df.DATE]).size()\
.mean(level='TIME')
答案 1 :(得分:0)
首先,您需要计算所有注册并将其存储在df中,然后使用mean()函数进行1h间隔,然后这样做。像这样:
df_registered['count'] = df_input['month'].resample("1h").count()
df_registered['avg'] = df_registered['count'].resample("1h").mean()
要重新采样,您首先需要选择一个索引。