在pandas DataFrame上对列进行子集化时,列数会丢失

时间:2018-02-06 19:55:45

标签: python pandas

我正在使用pima indians数据集。通过read_csv阅读文件后,shape看起来很擅长(768,9)。但是对前8列进行子集化会导致形状的columns维度丢失:

pima = pd.read_csv('/git/uni/data/pima-indians-diabetes.csv', header=0)
X = pima.iloc[:,-1]
Y = pima.iloc[:,:-1]
gnb = GaussianNB()
y_pred = gnb.fit(X,Y) #  .predict(pima)

这里的惊喜是X.shape 为什么形状会丢失?

`pima.shape =(768,9) X.shape =(768,) Y.shape =(768,8)

然后我们被fit

咬了一口
ValueError: Expected 2D array, got 1D array instead:
array=[1 0 1 ..., 0 1 0].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

更新我还尝试了X = pima.iloc[:,-1].values,但它提供了相同的结果/行为

2 个答案:

答案 0 :(得分:2)

您向后定义了X和Y,X是要素列:-1,而Y,即目标,是您的最后一列-1。而且,标准约定是使用X(大写)和y(小写)。

因此,您的代码应如下所示:

X=pima.iloc[:,:-1]
y=pima.iloc[:,-1]
gnb = GaussianNB()
y_pred = gnb.fit(X,y) 

答案 1 :(得分:1)

你混淆了名字,你的x应该是y,反之亦然

Y= pima.iloc[:,-1]
X = pima.iloc[:,:-1]