按小时间隔查找平均人数,熊猫/Numpy



我有一个名为"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()

要使重新采样正常工作,您首先需要选择一个索引。

最新更新