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

将Datetime转换为HH:MM格式:按时段分析多日期事件并实现连续绘图

解决方法

要提取时分并保留可连续绘图的属性,核心是把时间转换成连续数值(而非字符串或离散的小时分组),这样既能保留时分的精确信息,又能支持连续的直方图绘制。

步骤1:生成连续时间数值

利用pandas的dt访问器,提取小时和分钟,将分钟转换成小时的小数部分,得到一个从0.0(00:00)到23.9833...(23:59)的连续数值列:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 模拟你的数据集
np.random.seed(42)
dates = pd.date_range('2022-08-08', '2022-08-10', freq='5min')
new_df = pd.DataFrame({'Datetime': np.random.choice(dates, 500, replace=True)})

# 生成连续时间数值:小时 + 分钟/60
new_df['Time_Continuous'] = new_df['Datetime'].dt.hour + new_df['Datetime'].dt.minute / 60

步骤2:绘制时分直方图

基于连续数值绘制直方图,再将X轴刻度转换为HH:MM格式,确保X轴范围覆盖00:00到23:59:

plt.figure(figsize=(10, 6))
# 按每10分钟一个区间绘制直方图(24*6=144个bins)
plt.hist(new_df['Time_Continuous'], bins=144, range=(0, 24), edgecolor='black', alpha=0.7)

# 设置X轴刻度与标签:每小时一个刻度,显示为HH:00
plt.xticks(np.arange(0, 25, 1), [f'{h:02d}:00' for h in range(24)])
plt.xlabel('时间 (HH:MM)')
plt.ylabel('频次')
plt.title('时分分布直方图')
plt.xlim(0, 24)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.show()

方法优势

  • 避免了字符串时间的离散性,支持连续的直方图区间划分;
  • 保留了分钟级的细节,不会像按小时分组那样丢失精度;
  • 连续数值适配直方图的连续X轴需求,通过刻度标签转换回HH:MM格式,兼顾数据准确性和可视化可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:18:25