Pandas运行报TypeError: 'DataFrame' object is not callable错误如何解决
报错根因
- 你已通过
pd.read_csv("Posts.csv")将dataset赋值为Pandas DataFrame对象,这类对象是结构化数据表,不支持()格式的函数调用,你后续写的dataset(n_samples=...)属于把DataFrame误当函数调用,直接触发了该类型错误。 - 这行错误代码的参数是
sklearn.datasets.make_classification生成模拟数据集的传参格式,属于你混淆了「加载自有数据集」和「生成模拟测试数据集」的代码逻辑:既然已经导入了自己的Posts.csv数据,这行生成模拟数据的代码完全多余,可以直接删除。 - 额外还有一处隐含错误:你前面定义X时用的是
dataset.values[:,0:2],意味着X只有2列数据,后续绘图时取X[row_ix, 3]会触发索引越界报错,需要同步修正。
修复后的完整代码
# Dependencies import pandas as pd from numpy import where from matplotlib import pyplot # Load Data names = ["Frequency","Comments Count","Likes Count","Text nwords"] dataset = pd.read_csv("Posts.csv", encoding="utf-8", sep=";", names=names, header=0, engine="python") # 取全部4个特征,匹配后续绘图的索引取值 X = dataset.values[:,0:4] # 取第4列(索引3)作为标签 y = dataset.values[:,3] # Explore Data print(dataset.shape) print(dataset.head(10)) print(dataset.describe()) print(dataset.dtypes) # create scatter plot for samples from each class for class_value in range(3): # get row indexes for samples with this class row_ix = where(y == class_value) # create scatter of these samples pyplot.scatter(X[row_ix, 0], X[row_ix, 3]) # show the plot pyplot.show()
自有数据集导入注意事项
- 加载csv时如果已经指定
header=0,说明csv第一行是表头,你手动传的names参数会覆盖原表头,如果你要保留原csv的表头,直接删掉names=names参数即可。 sep=";"和delimiter参数重复,只保留sep=";"即可,多余参数可以删掉避免歧义。- 提取特征和标签时可以直接用DataFrame的列名索引写法,可读性更高:比如
X = dataset[["Frequency","Comments Count","Likes Count","Text nwords"]].values,y = dataset["Text nwords"].values,避免切片索引写错列数。
内容的提问来源于stack exchange,提问作者Sofia Vlachou
相关产品推荐
相关产品推荐

