通过每小时的时间间隔,找到熊猫的平均人数

时间:2018-09-16 19:26:00

标签: python pandas numpy

我有一个名为“ 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

请帮助!

2 个答案:

答案 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()

要重新采样,您首先需要选择一个索引。