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