1

输入 csv 文件:

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根据所选列执行关联?

4

3 回答 3

2

既然你提到statsmodels我假设你已经pandas安装了它的依赖项。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]])

鉴于缺失值,这是正确的。

于 2013-02-26T20:23:42.517 回答
0

您可以使其忽略列较少的行(使用 genfromtxt 导入 numpy 中缺少值的 csv 数据),但不能使其将它们解析为不完整。如果你把分隔符放在适当的位置(即1,2,,,)它可以工作,但否则我认为genfromtxt它不够聪明,无法做你想做的事。

不过,您可以使用该csv模块轻松实现它。

于 2013-02-26T11:40:07.780 回答
0

就我而言,我的数据中有特殊字符 # 是什么导致了问题。例子:

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

解决方案:

更改评论字符,我将其更改为:@@@

dataset = genfromtxt(open(file,'r'), delimiter=',', dtype='f8',
comments='@@@@')[1:]
于 2015-11-23T14:08:30.000 回答