Python 按小时间隔计算平均人数,熊猫/努比

Python 按小时间隔计算平均人数,熊猫/努比,python,pandas,numpy,Python,Pandas,Numpy,我有一个名为“Work.csv”的csv文件。一个人在10月份登记上班的时间(有很多条目) 我想找出每小时登记上班的平均人数。从上午12点到凌晨1点、凌晨1点到凌晨2点登记的平均人数。。。等等 我使用dt.hour尝试了自己的代码,只获得了特定时间内总人数的频率计数 我似乎无法得出平均数 我期望的输出是: Hour Average Number of People 0 40 1 50 2

我有一个名为“Work.csv”的csv文件。一个人在10月份登记上班的时间(有很多条目)

我想找出每小时登记上班的平均人数。从上午12点到凌晨1点、凌晨1点到凌晨2点登记的平均人数。。。等等

我使用dt.hour尝试了自己的代码,只获得了特定时间内总人数的频率计数

我似乎无法得出平均数

我期望的输出是:

Hour        Average Number of People
0                    40
1                    50
2                    65
3                    30
4                    30

请帮忙

首先,您需要计算所有注册并将其存储在df中,然后使用mean()函数每隔1小时计算一次,这样就可以了。大概是这样的:

  df_registered['count'] = df_input['month'].resample("1h").count()
  df_registered['avg'] = df_registered['count'].resample("1h").mean()

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

首先,您应该将时间列转换为日期时间。然后按时间和日期分组,找出每个时间每个日期有多少人工作。最后,再次按小时分组,得出平均值:

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(df.TIME.dt.hour).count()
对于您来说可能是一个好的开始
df.groupby([pd.to_datetime(df.TIME).dt.hour,df.DATE]).size().mean(level='TIME')
@Wen令人惊讶的是,原始代码的速度要快一些(15%)。
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
df.groupby([pd.to_datetime(df.TIME).dt.hour, df.DATE]).size()\
  .mean(level='TIME')