You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为pandas DataFrame补全缺失分钟级时间戳并填充None得到固定1440行

解决方案

首先处理时间序列补全缺失值,代码示例如下:

import pandas as pd
import matplotlib.pyplot as plt

# 假设你已加载的原始数据DataFrame命名为df
# 1. 转换时间列格式
df['timestamp'] = pd.to_datetime(df['timestamp'])
# 2. 计算每条数据对应的天内分钟数(0点对应0,23:59对应1439)
df['minute_of_day'] = df['timestamp'].dt.hour * 60 + df['timestamp'].dt.minute
# 3. 单分钟去重,同一分钟如果有多条采集数据保留第一条,可按需替换为均值等聚合逻辑
df = df.drop_duplicates(subset='minute_of_day', keep='first')
# 4. 生成全天1440分钟的完整索引,补全缺失行
full_minute_index = pd.Index(range(1440), name='minute_of_day')
df_full = df.set_index('minute_of_day').reindex(full_minute_index).reset_index()
# 5. 补全缺失行的timestamp为对应整分钟时间,空值替换为None
df_full['timestamp'] = pd.to_datetime(df_full['minute_of_day'], unit='m').dt.strftime('%H:%M:00')
df_full['value'] = df_full['value'].where(df_full['value'].notna(), None)

处理完成的df_full固定为1440行,缺失时段的value值已自动填充为None,符合需求。

后续绘图代码如下,可直接满足x轴范围(0,1440)、y轴范围(0,100)的要求:

plt.figure(figsize=(20, 6))
plt.plot(df_full['minute_of_day'], df_full['value'], linewidth=1, marker='.', markersize=3)
# 固定轴范围
plt.xlim(0, 1440)
plt.ylim(0, 100)
# 可选:优化x轴刻度,每2小时显示一次
plt.xticks(range(0, 1441, 120), [f'{h}:00' for h in range(0, 25, 2)])
plt.xlabel('当日时间(分钟)')
plt.ylabel('传感器采集值')
plt.grid(alpha=0.3)
plt.show()

注意事项

  • 如果你的数据包含多天,需要先按日期字段分组后,对每个日期的分组单独执行上述补全逻辑
  • 同一分钟内多条采集数据的处理逻辑可按需调整,比如先按minute_of_day分组对value取均值再做补全
  • matplotlib会自动跳过value为NaN/None的点位,不会绘制无效的连续线段,符合缺失值的常规展示需求

内容的提问来源于stack exchange,提问作者Ricky Palaguachi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:54:01