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

如何对自定义CSV数据集LeftHipAngle列做时间序列分解解决freq L报错

报错根因

  • 第一个ValueError: freq L not understood报错:低版本statsmodels使用ms作为毫秒单位标识,不兼容旧频率标识L
  • 调用asfreq('L')后的新报错:截取的前420行数据的时间索引不是严格连续的毫秒间隔,重采样后会生成空值,seasonal_decompose不允许输入含空值的序列

解决方案

方案1:修复时间索引适配频率要求

先升级statsmodels和pandas到最新版本,再处理时间索引的连续性和空值:

from statsmodels.tsa.seasonal import seasonal_decompose
import pandas as pd

# 可将url替换为你本地CSV文件路径
url = 'https://raw.githubusercontent.com/lucaphen/EEE4022S/main/subject_31_angle_joints.csv'

df = pd.read_csv(url, parse_dates=['Time'], index_col='Time')
df = df[:420]
# 重采样为毫秒间隔,用线性插值补全缺失值(关节角度数据适配线性插值逻辑)
df = df.asfreq('ms').interpolate(method='linear')
# period参数按你数据的实际季节性周期设置,单位为采样点数
result_mul = seasonal_decompose(df['LeftHipAngle'], model='multiplicative', extrapolate_trend='freq', period=100)

方案2:跳过频率识别手动指定周期(更适合高频采样数据)

不需要依赖时间索引的频率属性,直接传入序列值手动指定周期,完全避开频率相关报错:

from statsmodels.tsa.seasonal import seasonal_decompose
import pandas as pd

# 可将url替换为你本地CSV文件路径
url = 'https://raw.githubusercontent.com/lucaphen/EEE4022S/main/subject_31_angle_joints.csv'

df = pd.read_csv(url, parse_dates=['Time'], index_col='Time')
df = df[:420]
# 直接传入序列值,period为你数据中一个完整周期的采样点数
result_mul = seasonal_decompose(df['LeftHipAngle'].values, model='multiplicative', extrapolate_trend='freq', period=100)

注意:如果LeftHipAngle列存在负值,请将model参数改为additive,乘法模型不支持负数值输入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:45:03