我该如何解决“module 'pandas' has no attribute 'scatter_matrix'”错误?

35

我正在尝试在Jupyter Notebook中运行以下代码:

pd.scatter_matrix()

请问该怎么做?

import matplotlib.pyplot as plt
import pandas as pd

# Load some data
iris = datasets.load_iris()
iris_df = pd.DataFrame(iris['data'], columns=iris['feature_names'])
iris_df['species'] = iris['target']

pd.scatter_matrix(iris_df, alpha=0.2, figsize=(10, 10))
plt.show()

但是我得到了AttributeError: module 'pandas' has no attribute 'scatter_matrix'的错误提示。即使在终端执行了conda update pandasconda update matplotlib命令后,这个问题仍然存在。

我执行了pd.__version__命令来检查我的pandas版本,它是'0.24.2'。可能是什么问题呢?


1
请查看文档中的“绘图”部分:请参阅文档,并检查API是否与您的版本相符。 - EdChum
6个回答

67

这种方法在pandas.plotting下,参考文献请看文档pandas.plotting.scatter_matrix

from pandas.plotting import scatter_matrix

scatter_matrix(iris_df, alpha=0.2, figsize=(10, 10))

4
我刚学Python,但是pandas.plotting不应该已经包含在pandas中吗?我现在正在运行一个教程,里面正好给出了问题中的代码,我也想知道为什么它不起作用。但是当使用"from pandas.plotting ..."时,它可以工作。 尽管如此,我仍然想知道为什么绘图命令如此特殊,需要手动导入? - Ben
1
好像那些在datacamp.com上学习监督学习课程的人来到这里了。 - spidermarn
1
@guten_pro 《黑客机器学习》非常棒。你可以在b-ok.cc上找到它。 - Saad Rehman
1
@guten_pro,那也是一个很好的资源。我查阅了许多书籍。我的建议是开始阅读;你会找到自己的路。 - Saad Rehman
1
@jezreal,你的好答案无处不在。谢谢。 - LuckyFr
显示剩余5条评论

21

另一个选择是仅保留pandas导入并重新编写scatter_matrix命令,如下例所示:

import pandas as pd

pd.plotting.scatter_matrix(iris_df, alpha=0.2, figsize=(10, 10))

最佳答案。您不需要重新导入panda模块。 - Leonardo

4
使用
from pandas.plotting._misc import scatter_matrix

不要使用 pd.scatter_matrixpandas.scatter_matrix,而是直接调用 scatter_matrix 方法。

例如:

cmap = cm.get_cmap('gnuplot')
scatter = scatter_matrix(X, c = y, marker = 'o', s=40, hist_kwds={'bins':15}, 
    figsize=(9,9), cmap = cmap)
plt.suptitle('Scatter-matrix for each input variable')
plt.savefig('fruits_scatter_matrix')
plt.show()

请阅读编辑指南 - David Buck

3

使用:

from pandas.plotting import scatter_matrix

代码变成如下形式:
import matplotlib.pyplot as plt
from pandas.plotting import scatter_matrix

iris = datasets.load_iris()
iris_df = pd.DataFrame(iris['data'], columns=iris['feature_names'])
iris_df['species'] = iris['target']

scatter_matrix(iris_df, alpha=0.2, figsize=(10, 10))
plt.show()

1
在我们的情况下,我们执行了以下代码“axs = pd.scatter_matrix(sampled_data, figsize=(10, 10))”,因此错误明确表示scatter_matrix在pandas中不可用。

enter image description here

解决方案: 通过谷歌搜索,我们发现scatter_matrix可以在pandas.plotting中使用。
因此,正确的代码是“axs = pd.plotting.scatter_matrix(sampled_data, figsize=(10, 10))”。

enter image description here


0

我使用了

from pandas.plotting import scatter_matrix

并直接调用scatter_matrix工作得很好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接