使用Seaborn绘制Countplot时Numpy数组报AttributeError问题求助
解决Seaborn CountPlot针对Numpy数组的AttributeError问题
这个错误的根源很明确:Seaborn的countplot函数的data参数要求传入的是支持.get()方法的对象(比如pandas DataFrame),但你传入的train_y是一个numpy数组——numpy数组并没有.get()方法,所以触发了这个AttributeError。
下面给你两种可行的解决办法:
方法1:将Numpy数组转换为Pandas DataFrame
这是最贴合Seaborn使用习惯的方式,把数组转成带列名的DataFrame后,就能直接沿用你原本的代码逻辑:
import pandas as pd import seaborn as sns # 把二维numpy数组转为DataFrame,指定列名为"class" train_y_df = pd.DataFrame(train_y, columns=["class"]) sns.set(style="darkgrid") ax = sns.countplot(x="class", data=train_y_df)
方法2:直接将展平后的数组传给x参数
如果你不想引入pandas,可以把二维数组展平成一维,直接传给countplot的x参数,跳过data参数:
import seaborn as sns sns.set(style="darkgrid") # 用flatten()把(5216,1)的二维数组转为一维数组 ax = sns.countplot(x=train_y.flatten())
两种方法都能帮你统计数组中每个类别的数量并绘制计数图,第一种方法的代码可读性更强,也更符合Seaborn的设计逻辑。
内容的提问来源于stack exchange,提问作者sri dhurkesh
相关产品推荐
相关产品推荐

