如何解决'Axes' object has no attribute 'is_first_col'报错?
问题描述
完全按照练习册编写的代码如下:
from sklearn.model_selection import train_test_split, cross_val_score, StratifiedKFold from matplotlib import pyplot from sklearn.preprocessing import StandardScaler import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('D:\pima-indians-diabetes3.csv') X = df.iloc[:, 0:8] y = df.iloc[:, 8] ss = StandardScaler() scaled_X = pd.DataFrame(ss.fit_transform(X), columns = X.columns) fig, ax = plt.subplots(1, 2, figsize = (12, 4)) X.plot(kind='kde', title = 'Raw data', ax=ax[0]) scaled_X.plot(kind='kde', title = 'StandardScaler', ax=ax[1]) plt.show()
运行时在以下两行代码处报错:
X.plot(kind='kde', title = 'Raw data', ax=ax[0]) scaled_X.plot(kind='kde', title = 'StandardScaler', ax=ax[1])
报错信息:Axes' object has no attribute 'is_first_col'
报错原因
这个错误是pandas与matplotlib版本不兼容导致的:is_first_col是pandas 1.5+版本中用于绘图布局的内部属性,若你的matplotlib版本过低(低于3.6),其Axes对象不包含该属性,就会触发此报错。
解决方法
方案一:升级matplotlib到兼容版本
执行以下命令升级matplotlib,确保版本≥3.6:
pip install --upgrade matplotlib
方案二:调整代码适配旧版matplotlib
如果暂时无法升级依赖,可以修改绘图逻辑,绕开pandas对is_first_col的依赖:
from sklearn.model_selection import train_test_split, cross_val_score, StratifiedKFold from matplotlib import pyplot from sklearn.preprocessing import StandardScaler import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('D:\pima-indians-diabetes3.csv') X = df.iloc[:, 0:8] y = df.iloc[:, 8] ss = StandardScaler() scaled_X = pd.DataFrame(ss.fit_transform(X), columns = X.columns) # 手动创建子图并分别绘制 plt.figure(figsize=(12,4)) plt.subplot(1,2,1) X.plot(kind='kde', title='Raw data', ax=plt.gca()) plt.subplot(1,2,2) scaled_X.plot(kind='kde', title='StandardScaler', ax=plt.gca()) plt.tight_layout() plt.show()
内容的提问来源于stack exchange,提问作者Bella Lee
相关产品推荐
相关产品推荐

