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

使用Prophet预测Lululemon股价时遭遇TypeError错误求助

解决Prophet拟合Lululemon股价数据时的TypeError问题

你遇到的TypeError: arg must be a list, tuple, 1-d array, or Series,本质是Prophet无法正确识别输入DataFrame中ds或y列的格式,最常见的触发原因是:

  • ds列不是标准的datetime64类型(yfinance返回的日期列可能附带时区信息,导致Prophet无法解析)
  • y列存在缺失值或非数值类型

修复步骤

  1. 强制转换ds列为无时区datetime类型:显式去除日期列的时区信息,转换为Prophet要求的标准格式
  2. 清理y列缺失值:删除包含缺失收盘价的行,避免Prophet拟合时出错

修改后的完整代码

import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
from prophet import Prophet

# 下载Lululemon股价数据
ticker = 'LULU'
lululemon_data = yf.download(ticker, start='2007-07-27')  # Lululemon上市日期

# 预处理数据适配Prophet格式
lululemon_data.reset_index(inplace=True)
lululemon_data = lululemon_data[['Date', 'Close']]
lululemon_data.rename(columns={'Date': 'ds', 'Close': 'y'}, inplace=True)

# 关键修复:标准化日期格式 + 清理缺失值
lululemon_data['ds'] = pd.to_datetime(lululemon_data['ds']).dt.tz_localize(None)
lululemon_data = lululemon_data.dropna(subset=['y'])

# 拟合Prophet模型
model = Prophet()
model.fit(lululemon_data)

# 生成未来5年的预测时间序列
future = model.make_future_dataframe(periods=5*365)

# 执行预测
forecast = model.predict(future)

# 可视化预测结果
fig = model.plot(forecast)
plt.title('Lululemon Stock Price Forecast for Next 5 Years')
plt.xlabel('Date')
plt.ylabel('Closing Price (USD)')
plt.show()

验证数据格式的方法

运行代码前可先检查数据是否符合要求:

# 检查ds列类型,应输出 datetime64[ns]
print(lululemon_data['ds'].dtype)
# 检查y列缺失值数量,应输出0
print(lululemon_data['y'].isna().sum())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 22:47:41