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

如何结合Pandas Groupby与Resample分析函数调用时长数据?

实现步骤与代码示例

首先,先把duration列从timedelta类型转为数值(比如总秒数),方便后续聚合计算:

# 将timedelta转为总秒数,便于统计
df['duration_sec'] = df['duration'].dt.total_seconds()

核心统计实现(两种方法二选一)

方法1:用pd.Grouper同时按时间窗口和函数分组

直接指定5分钟时间窗口,和function一起作为分组依据,一次性计算所需统计量:

# 按5分钟时段 + 函数名称分组,计算时长的最大、最小、平均值
stats_result = df.groupby([
    pd.Grouper(freq='5min'),  # 基于DatetimeIndex的5分钟分段
    'function'
])['duration_sec'].agg(['max', 'min', 'mean']).reset_index()

方法2:先按函数分组,再对每组做时间重采样

适合需要对单个函数单独分析的场景,逻辑更直观:

# 先按函数分组,每个函数组内按5分钟重采样统计
stats_result = df.groupby('function')['duration_sec'].resample('5min').agg(['max', 'min', 'mean']).reset_index()

定位缓慢时段

统计结果出来后,可通过筛选条件定位异常时段:

# 示例:筛选平均调用时长超过10秒的记录
slow_cases = stats_result[stats_result['mean'] > 10]
# 或者筛选最大值超过阈值的记录
slow_spikes = stats_result[stats_result['max'] > 30]

关键说明

  • freq='5min':指定时间窗口为5分钟,Pandas会自动按Timestamp的时间戳划分连续的5分钟区间(比如00:00-00:05、00:05-00:10等)
  • agg(['max', 'min', 'mean']):批量聚合多个统计指标,比单独调用max()/min()更高效
  • reset_index():将分组后的多级索引转为普通列,方便后续查看、导出或可视化
  • 如果需要保留无调用记录的5分钟窗口(填充0或NaN),可在resample或Grouper中添加dropna=False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:57:16