如何重新采样 pandas 数据框以模拟平均一周?

How to resample pandas dataframe to model an average week?

我有一个包含消息数量和发送时间段的数据框(以 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 |
+---------------------+--------------+

此数据框具有一年的增量时间戳和该期间的消息数。我如何使用整个数据框并作为星期几作为参考来建模 mean/median 周。

+-----------------+-------------------------+
| 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()