python - 如何对 pandas 数据框进行重新采样以建模平均周?

标签 python pandas dataframe resampling

我有一个包含消息数量及其发送时间段的数据帧(以 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/

相关文章:

python - RESTful API 中使用的 Etag 仍然容易受到竞争条件的影响

python - 如何嵌套 numpy() 的 np.where,或者一个接一个?

python - 如何使用 Pandas 获取表格中的单个单元格?

python - 如何使用 groupbys 成为更快的 Pandas

r - 合并列并创建另一列以指定源

python - 使用 pandas 将具有相同索引的行中的信息合并到单行中

python - 如何使用 pipenv 为 python 应用制作轻量级 docker 镜像

python - 如何使用 python 替换/删除 pdf 中的文本?

python - 为什么 `item["错误“] : "message"` NOT a syntax error in python 3. 6?

python - 安德鲁斯曲线中的颜色