Matplotlib绘制股价预测图触发无效日期ValueError的问题求助
报错根本原因
- 代码执行顺序颠倒:你当前的代码块里,将
dataset_train转换为datetime索引的3行逻辑,放在了所有绘图代码的后面。Colab分块运行时,代码执行顺序由你点击运行的顺序决定,和页面排版顺序无关——你运行绘图块时,dataset_train的索引还是默认的从0开始的整数序列,根本没有完成日期格式转换。 - 两类x轴值量级不匹配:绘图时你同时传入两类值作为x坐标:
PREDICTIONS_FUTURE的datetime索引(在matplotlib中对应几万量级的日期序数)、dataset_train的整数索引(0、1、2…的小数值)。matplotlib检测到传入值包含datetime类型后,会自动将x轴设置为datetime格式,此时轴的视图范围会被拉取到整数索引的最小值(0)和预测值的最大日期序数之间,0值对datetime轴来说是远早于公元1年的无效值,最终在渲染x轴刻度(也就是执行plt.xticks()时)抛出报错。报错里的-34780.4极值,就是两类不匹配的x值混算后得到的无效视图下限。 - 该问题和你CSV文件里的日期列质量无关。
修复操作
- 调整代码顺序:把
dataset_train的索引转换代码移到所有绘图逻辑的最前面,在Colab里先完整运行数据加载、索引转换的所有代码块,再运行绘图代码块。 - 绘图前增加类型校验,确认两个绘图数据集的x轴索引都为datetime类型:
print(type(PREDICTIONS_FUTURE.index)) print(type(dataset_train.index)) # 两个输出均为 pandas.core.indexes.datetimes.DatetimeIndex 才算符合要求 - 可顺手修正标题拼写错误:原标题中的
Predcitions改为Predictions,Acutal改为Actual。
内容的提问来源于stack exchange,提问作者MJ95
相关产品推荐
相关产品推荐

