2013-02-26 62 views
0

輸入CSV文件:genfromtxt在Python代碼失蹤列

a,b,c,d,e 
1,2,3,4,2 
3,4,5,6,3 
3,4,5 
1,2 

代碼:

import numpy as np 

data = np.genfromtxt("sa.csv", dtype=None, delimiter=',', names=True) 
print data['a'],data['b'],data['e'] 

我會得到一個錯誤

Traceback (most recent call last): 
    File "cs.py", line 3, in <module> 
    data = np.genfromtxt("sa.csv", dtype=None, delimiter=',', names=True) 
    File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 1593, in genfromtxt 
    raise ValueError(errmsg) 
ValueError: Some errors were detected ! 
    Line #4 (got 3 columns instead of 5) 
    Line #5 (got 2 columns instead of 5) 

如何應對這一點,並執行相關基於python中使用statsmodels的選定列?

+0

我已經收拾您的文章一點點 - 雖然你是回溯仍然有點虛無you you - 你可能希望複製/粘貼並重新引用引用。這一次,粘貼它,突出顯示該地段並按下ctrl + k ...或點擊[編輯] – 2013-02-26 11:12:26

+0

時的小'{}'圖標對不起,我新來這裏,我會學到它 – user2086122 2013-02-26 11:35:56

+0

來計算相關性,如果你有缺失值,或者使用熊貓,你可以使用''np.corrcoef''或''np.ma.corrcoef''。 statsmodels不重複,也沒有這些功能。 – user333700 2013-02-26 14:39:05

回答

0

您可以使其忽略具有較少列的行(Using genfromtxt to import csv data with missing values in numpy),但不能將其解析爲不完整。如果你把分隔符放在適當的位置(即1,2,,,),它可以工作,但否則我不認爲genfromtxt是足夠聰明的做你想做的。

儘管如此,您可以使用csv模塊自行實施。

+0

需要負值-1 – user2086122 2013-02-26 11:51:37

+0

如何執行兩列的相關 – user2086122 2013-02-26 11:52:11

+0

這聽起來像是第二個無關的問題。我建議你單獨發佈。 – 2013-02-26 11:53:55

2

既然你提到statsmodels我假設你已經安裝了它的pandas依賴項。熊貓會正確解析你的例子:

import pandas as pd 
import numpy as np 
dat = pd.read_csv('test.csv') 
np.corrcoef(dat) 

array([[ 1.  , 0.94174191,   nan,   nan], 
     [ 0.94174191, 1.  ,   nan,   nan], 
     [  nan,   nan,   nan,   nan], 
     [  nan,   nan,   nan,   nan]]) 

給出缺失值是正確的。

0

在我的情況下,我的數據裏面有特殊字符#是什麼導致了問題。 例子:

a,b#,c,d,e 
1,2,3,4,2 

解決方案:

變化的評論文字,我把它改爲:@@@

dataset = genfromtxt(open(file,'r'), delimiter=',', dtype='f8', 
comments='@@@@')[1:]