python - 按小时间隔查找平均人数,Panda/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 列转换为 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')
推荐阅读
- r - Spacyr 未初始化以运行 NER
- java - 我在 jitpack 中将我的依赖版本作为 Tag 而不是 1.0 ..?
- java - 警告:org.xerial 的 sqlite-jdbc 未加载
- ssl - 使用 pip3 和 python 安装软件包时出现问题 (ReadTimeoutError / SSLError(SSLCertVerificationError)
- c# - ASP.NET Core 模拟服务仅在一个请求的范围内
- php - 如果客户购买了一些特定的产品,那么我想将其他条件放入其中
- java - Spring 自定义身份验证令牌从未 GCed
- java - 如何在 Android 上将位图图像转换为 TensorImage?
- shap - 获取使用 kNN 进行的预测的 SHAP 值
- database - INSERT INTO 错误和 PLS-00231 错误函数可能无法在 SQL 中使用