我有一个名为"Work.csv"的csv文件。一个人在 10 月份注册工作的时间(有很多条目(。
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
我希望找到每小时注册工作的平均人数。上午 12 点至凌晨 1 点、凌晨 1 点至凌晨 2 点注册的平均人数......等等。
我使用 dt.hour 尝试了自己的代码,但只设法获得了特定小时内总人数的频率计数。
我似乎无法获得平均值。
我想要的输出是:
Hour Average Number of People
0 40
1 50
2 65
3 30
4 30
请帮忙!
首先,您应该将 TIME 列转换为日期时间。然后按时间和日期分组,以了解每个日期每小时有多少人工作。最后,再次按小时分组并得到平均值:
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')
首先,您需要计算所有注册并将其存储在 df 中,然后使用 mean(( 函数 1 小时间隔,这应该可以做到。像这样:
df_registered['count'] = df_input['month'].resample("1h").count()
df_registered['avg'] = df_registered['count'].resample("1h").mean()
要使重新采样正常工作,您首先需要选择一个索引。