2015-04-30 32 views
0

我读取CSV文件并获得一个有几列的数据框(名称:数据),第一个数字格式为数字长(类型:pandas.core.series.Series)和最后一列(标签)是一个二进制响应变量字符串 'P(驴)'/ 'F(AIL)'熊猫数据帧转换为线性回归

import statsmodels.api as sm 
label = data.ix[:, -1] 
label[label == 'P'] = 1 
label[label == 'F'] = 0 

fea = data.ix[:, 0: -1] 
logit = sm.Logit(label, fea) 
result = logit.fit() 
print result.summary() 

熊猫抛出我此错误消息:投射到numpy的D型细胞大熊猫数据:ValueError异常使用np.asarray(数据)检查输入数据 Numpy,Pandas等模块已导入。我试图将fea列转换为浮动,但仍然没有通过。有人能告诉我如何纠正?
感谢

更新:

data.info() 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 500 entries, 68135 to 3002 
Data columns (total 8 columns): 
TestQty   500 non-null int64 
WaferSize  500 non-null int64 
ChuckTemp  500 non-null int64 
Notch   500 non-null int64 
ORIGINALDIEX 500 non-null int64 
ORIGINALDIEY 500 non-null int64 
DUTNo   500 non-null int64 
PassFail  500 non-null object 
dtypes: int64(7), object(1) 
memory usage: 35.2+ KB 

data.sum() 
TestQty   530 
WaferSize   6000 
ChuckTemp  41395 
Notch   135000 
ORIGINALDIEX  12810 
ORIGINALDIEY  7885 
DUTNo   271132 
PassFail   20 
dtype: float64 
+0

您需要将字符串转换为int值我猜,布尔可能w orks – EdChum

+0

你可以发布一些导致错误的示例数据吗? – Alexander

+0

@Alexander,错误在“logit = sm.Logit(label,fea)” – Jin

回答

0

应该不是你的特点是这样的:

fea = data.ix[:, 0:-1] 

从你的数据,你会看到通过失败款项20你将 'P' 到1日前和'F'归零。我相信这是你错误的根源。

要看看是什么在那里,尝试:

data.PassFail.unique() 

要验证它总计500(行的数据帧的数量):

sum(label[label == 0]) + sum(label[label == 1) 

最后,尝试将值传递给功能,而不是系列和数据帧:

logit = sm.Logit(label.values, fea.values) 
+0

同样的错误信息。顺便说一句,您在编辑我的原始文章中有关于此命令的错字。 – Jin

+0

尝试使用df.info()和df.sum()来获取DataFrame上的一些基本诊断信息。 – Alexander