首页 > 解决方案 > 我收到此错误 TypeError: unhashable type: 'slice' in Scatter plot

问题描述

我被困在可视化散点图上,因为我收到了这个错误消息:TypeError: unhashable type: 'slice'

Genre_color = {'动画':'r','恐怖':'b','惊悚':'y','戏剧':'m','喜剧':'deeppink','科幻':'黄金”、“西部”:“橙色”、“冒险”:“g”、“纪录片”:“棕色”、“音乐”:“靛蓝”、“奇幻”:“黄色”、“神秘”:“紫色” ,“黑色电影”:“青色”,“(未列出类型)”:“珊瑚”,“动作”:“青色”,“战争”:“黑色”,“浪漫”:“天蓝色”,“儿童” :'石灰','犯罪':'深绿色'}

def join_movieDataFrames(pcaDF, genreDF):
x_scaled = preprocessing.scale(pcaDF, with_std=False)
pca = decomposition.PCA(n_components=2)
df_trans = pd.DataFrame(pca.fit_transform(x_scaled),index=df_A.index)
x = pd.merge(df_trans, genreDF, on='movieId')
return plt.scatter(x[:,0],x[:,1],c=data['genre_color'])
(df_A, df_B) = construct_data('ratings.csv', 'movies.csv')
(exVar, df_T) = apply_pca(df_A, 2)
join_movieDataFrames(df_T, df_B)

标签: python

解决方案


您正在尝试通过切片语法从数据框中提取值,这会引发 TypeError。

您应该使用数据框的iloc属性以及values访问该数据:

return plt.scatter(x.iloc[:,0].values ,x.iloc[:,1].values,c=data['genre_color'])

iloc是允许基于整数位置的索引的数据框属性,并values删除仅返回实际值的标签。


推荐阅读