在PyCaret时间序列中创建12个月MA列出现全NA值该如何解决
原因说明
- 这不是PyCaret版本的问题,属于pandas滑动窗口计算的正常逻辑:
rolling(12).mean()默认要求窗口内存在12个非空值才会返回计算结果,你展示的是数据集前5行,还没有凑够12个连续数据点,所以前11行的MA12列天然就是NaN值。 - 还有一种可能是列名不匹配:你使用AirPassengers数据集时,乘客数的列名是
Passengers,如果直接照搬教程里的data['variable']写法,调用不存在的列也会返回全NaN结果。
解决方法
- 先核对代码里的列名,确保你做滑动计算的列是实际存在的数值列,比如用AirPassengers数据集时要写成:
data['MA12'] = data['Passengers'].rolling(12).mean() - 如果你希望前几行也能输出计算结果,可以调整滑动窗口的最小观测数参数:
# min_periods=1代表窗口内只要有至少1个有效值就计算 data['MA12'] = data['Passengers'].rolling(12, min_periods=1).mean() - 如果你是要完全复现教程流程,前11行的NaN属于正常情况,直接运行后续代码即可,PyCaret回归模块会自动处理数据中的缺失值,不会影响后续建模。
内容的提问来源于stack exchange,提问作者Anakin Skywalker
相关产品推荐
相关产品推荐

