2015-04-30 39 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