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

如何转换timedelta类型使Plotly直方图正确显示时间轴

timedelta64类型时长数据Plotly直方图绘制方案

问题描述

  • 待绘制直方图的字段为timedelta64类型的时长数据,单条数据示例:Timedelta('0 days 00:00:44.749500')
  • 直接调用px.histogram()传入原始timedelta数据时,组件无法正确识别时间语义,坐标轴会出现50T、60T这类异常标识,无法正常展示时间刻度。
  • 初始存在问题的写法代码:
fig = px.histogram(x=df_TT_redux["T_delta"],color=df_TT_redux["event_source"],log_y=True)

可落地的两种转换方案

方案1:转换为ISO标准时长格式

  • 效果:可实现基础的时间轴识别,展示效果部分符合预期,后续需要配合分箱、刻度参数做调优
  • 实现代码:
import isodate
# 批量把timedelta转ISO时长字符串
df_TT_redux["T_delta3"]=[isodate.duration_isoformat(x) for x in df_TT_redux["T_delta"]]

fig = px.histogram(
    x=df_TT_redux["T_delta3"],
    color=df_TT_redux["event_source"],
    color_discrete_map=color_discrete_map,
    log_y=False,
    log_x=False,
    nbins=100
)

方案2:按固定时间单位换算为数值(稳定性最高)

  • 逻辑:Plotly对数值型轴的支持最完善,不会出现时间语义解析错误的问题。将原始timedelta数据除以选定单位的Timedelta常量,得到对应单位下的数值即可,单位可根据数据的实际跨度选择:短时长选秒/分钟,长时长选小时/天。
  • 实现代码(以换算为小时单位为例):
df_TT_redux["T_delta2"] = df_TT_redux["T_delta"] / pd.Timedelta("1 hour")

注意:使用该方案绘图后,需要手动配置x轴标题标注单位,例如调用fig.update_layout(xaxis_title="事件间隔时长(小时)"),避免阅读者误解数值含义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:30:51