使用Cufflinks绘制Spread Graph时遇pandas无np属性错误
解决Cufflinks绘制Spread Graph时的
AttributeError: module 'pandas' has no attribute 'np'错误 问题原因
新版Pandas(2.0及以上版本)移除了pd.np这个指向NumPy的快捷引用,而Cufflinks绘制Spread Graph的相关源码仍在使用pd.np语法,导致触发该错误。其他图表正常是因为只有Spread的逻辑依赖了这个废弃的语法。
解决办法
1. 手动修改Cufflinks源码
- 找到Cufflinks的安装目录(可通过
import cufflinks; print(cufflinks.__file__)查看路径) - 定位到包含Spread绘图逻辑的文件(通常是
plotlytools.py) - 对代码做两处修改:
- 在文件顶部添加
import numpy as np - 将所有
pd.np替换为np(比如pd.np.mean改为np.mean,pd.np.array改为np.array)
- 在文件顶部添加
- 保存文件后重新运行代码即可。
2. 手动计算Spread数据,绕过Cufflinks内置实现
Spread Graph本质是展示两个序列的差值及原始序列,可自行计算差值后组合绘图:
import cufflinks as cf # 生成测试数据 df = cf.datagen.lines(2) # 计算两个序列的差值 df['spread'] = df.iloc[:, 0] - df.iloc[:, 1] # 先绘制原始两条折线 fig = df.iloc[:, :2].iplot(asFigure=True) # 添加差值的填充区域 fig.add_scatter( x=df.index, y=df['spread'], fill='tozeroy', name='Spread', fillcolor='rgba(0, 128, 255, 0.2)' ) fig.show()
3. 尝试Cufflinks开发版
如果官方已在dev分支修复该问题,可尝试安装开发版本:
pip install git+https://github.com/santosjorge/cufflinks.git
内容的提问来源于stack exchange,提问作者eureka honors
相关产品推荐
相关产品推荐

