我有一个包含消息数量及其发送时间段的数据帧(以 10 分钟为增量)。这是一个片段:
+---------------------+--------------+
| UnixTime | Num messages |
+---------------------+--------------+
| 2019-02-01 00:00:00 | 54 |
| 2019-02-01 00:10:00 | 23 |
| 2019-02-01 00:20:00 | 36 |
+---------------------+--------------+
此数据帧具有一年的增量时间戳以及该期间的消息数量。如何使用整个数据框并作为一周中的某一天作为引用来建模平均/中位数周。
+-----------------+-------------------------+
| UnixTime (Mean) | Mean number of messages |
+-----------------+-------------------------+
| Friday 00:00:00 | 56.3 |
| Friday 00:10:00 | 25.5 |
| Friday 00:20:00 | 30.4 |
+-----------------+-------------------------+
因此,输出数据帧应该对一年中从周一到周日的平均周进行建模,并计算该时间段和该天的全年平均消息数量。
我知道我可以通过 df["Day Of Week"] = df['UnixTime'].dt.day_name()
获取星期几但我如何对平均值进行建模,以便一年中的每个星期一都在 09:00 - 09:10
之间例如,被视为同一组。
最佳答案
我们可以有一个新列“weekNum”,将每一行标记为一年中第 N 周的一部分。我们可以通过对天数的数值进行下限划分来做到这一点。
df["weekNum"] = int(df["UnixTime"].dt.day//7)
然后我们可以分组:
df.groupby("weekNum").mean()
df.groupby("Day of week").mean()
编辑:
为了获得每 10 秒的间隔,现在我更好地理解了您的问题...我们可以使用 .strftime
并将时间格式设置为日期名称 %A
小时、分钟,第二个 %H%M%S
并按其分组。
df["dayTime"] = df.UnixTime.dt.strftime("%A%H%M%S")
df.groupby("dayTime").mean()
关于python - 如何对 pandas 数据框进行重新采样以建模平均周?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56363978/