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

Python计算每日平均任务时长及年度任务时长趋势分析模型咨询

解答:计算每日平均任务时长与任务时长趋势分析

1. 计算每日平均任务时长(Python/Pandas实现)

首先得把日期字段转成datetime类型,再按日期分组算均值就行,具体步骤如下:

  • 第一步:统一日期格式
    如果你的creationdateTime列还不是datetime类型,先做转换:

    import pandas as pd
    
    # 假设你的DataFrame名叫df
    df['creationdateTime'] = pd.to_datetime(df['creationdateTime'])
    
  • 第二步:按日期分组计算均值
    用dt.date提取纯日期(去掉时分秒),然后分组求每日的平均任务时长:

    # 分组计算并重置索引,让结果更易读
    daily_avg_duration = df.groupby(df['creationdateTime'].dt.date)['Totaltime'].mean().reset_index()
    # 重命名列名更直观
    daily_avg_duration.columns = ['Date', 'Average_Task_Duration']
    

    最终得到的daily_avg_duration就是每日平均时长的数据,直接打印或者可视化都很方便。


2. 分析任务时长趋势的可选模型

针对你这全年的日度数据,推荐几种实用的模型:

  • ARIMA/SARIMA 时间序列模型
    如果任务时长有明显的周期性波动(比如每周固定几天时长更长,或者月度季节性),SARIMA(带季节性的ARIMA)是绝佳选择。它能精准捕捉时间序列的自相关性、长期趋势和季节性规律,既适合趋势分析也能做短期预测。

  • 线性回归(量化线性趋势)
    如果时长的整体变化是线性的(比如逐渐变长或变短),用线性回归可以直接量化趋势的强弱:

    from sklearn.linear_model import LinearRegression
    
    # 把日期转换成一年中的第几天,作为自变量
    df['Day_of_Year'] = df['creationdateTime'].dt.dayofyear
    
    # 拟合线性模型
    X = df[['Day_of_Year']]
    y = df['Totaltime']
    lr_model = LinearRegression()
    lr_model.fit(X, y)
    
    # 斜率为正代表时长随时间增加,负则代表减少
    print(f"每日任务时长的趋势斜率: {lr_model.coef_[0]:.4f}")
    
  • Facebook Prophet
    Prophet是专为业务场景设计的时间序列工具,对季节性、节假日的处理非常友好,而且上手简单,不需要太多专业知识。它能自动分解趋势、季节性和节假日效应,直观展示时长的变化规律:

    from prophet import Prophet
    
    # 转换为Prophet要求的格式:ds(日期)、y(目标值)
    prophet_data = df.rename(columns={'creationdateTime': 'ds', 'Totaltime': 'y'})
    
    # 拟合模型并生成分析结果
    prophet_model = Prophet()
    prophet_model.fit(prophet_data)
    forecast = prophet_model.predict(prophet_data)
    
    # 可视化趋势和季节性组件
    prophet_model.plot_components(forecast)
    
  • 指数平滑模型(ETS)
    ETS(Error-Trend-Seasonal)模型可以自动拆解时间序列的误差、趋势和季节性三个部分,适合分析有稳定趋势或季节性的序列,用statsmodels就能实现:

    from statsmodels.tsa.exponential_smoothing.ets import ETSModel
    
    # 先按日期排序,确保时间序列是有序的
    df_sorted = df.sort_values('creationdateTime')
    # 假设数据有周度季节性,设置seasonal_periods=7
    ets_model = ETSModel(df_sorted['Totaltime'], trend='add', seasonal='add', seasonal_periods=7)
    ets_result = ets_model.fit()
    
    # 查看趋势和季节性的分解详情
    print(ets_result.summary())
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:35:15