#2簇 from pandas.plotting import scatter_matrix colors = { 0: 'red', 1: 'blue', } pd.plotting.scatter_matrix(df[['商品产地', '香调', '净含量', '价格', '评价']], s=100, alpha=1, c=colors[df["cluster2"]], figsize=(10,10)) plt.suptitle("With 2 centroids initialized") plt.show()这段代码报错如下:'Series' objects are mutable, thus they cannot be hashed
时间: 2024-01-12 08:05:36 浏览: 123
详解pandas绘制矩阵散点图(scatter_matrix)的方法
5星 · 资源好评率100%
这个错误是因为 `colors[df["cluster2"]]` 中使用了一个 `Series` 对象而不是一个可哈希的对象。`Series` 对象是可变的,因此它们不能被哈希。为了解决这个问题,你可以将 `df["cluster2"]` 转换为一个可哈希的对象,例如一个元组。你可以使用 `apply` 函数将每个值转换为一个元组,然后将结果传递给 `scatter_matrix` 函数。
以下是修改后的代码:
```
from pandas.plotting import scatter_matrix
import matplotlib.pyplot as plt
colors = {
0: 'red',
1: 'blue',
}
color_values = df["cluster2"].apply(lambda x: colors[x])
pd.plotting.scatter_matrix(df[['商品产地', '香调', '净含量', '价格', '评价']], s=100, alpha=1, c=color_values, figsize=(10,10))
plt.suptitle("With 2 centroids initialized")
plt.show()
```
在这个代码中,我们使用了 `apply` 函数将 `df["cluster2"]` 转换为一个包含颜色值的 `Series` 对象。我们使用了一个 `lambda` 函数来将每个簇的编号转换为相应的颜色值。然后,我们将这个新的 `Series` 对象传递给 `scatter_matrix` 函数。
阅读全文