【问题标题】:genfromtxt in python code for missing columnspython代码中的genfromtxt用于丢失列
【发布时间】:2013-02-11 18:33:48
【问题描述】:

输入 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根据选定的列执行关联??

【问题讨论】:

  • 我已经稍微整理了您的帖子 - 尽管您的回溯仍然有点不稳定 - 您可能希望复制/粘贴并再次放入引用。这一次,将其粘贴进去,突出显示该地段,然后按 ctrl+k...
  • 对不起,我是新手,我会学习它
  • 要计算相关性,你可以使用np.corrcoef,如果你有缺失值,你可以使用np.ma.corrcoef,或者使用pandas。 statsmodels 不会重复,也没有这些功能。

标签: python numpy python-2.7 statsmodels


【解决方案1】:

在我的情况下,我的数据中有特殊字符 # 是什么导致了问题。 示例:

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

解决方案:

更改cmets字符,我改成:@@@

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

【讨论】:

    【解决方案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]])
    

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

    【讨论】:

      【解决方案3】:

      您可以让它忽略列较少的行 (Using genfromtxt to import csv data with missing values in numpy),但不能让它将它们解析为不完整。如果你把分隔符放在适当的位置(即1,2,,,)它可以工作,但否则我认为genfromtxt不够聪明,无法做你想做的事。

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

      【讨论】:

      • 取负值-1
      • 如何对两列进行关联
      • 这听起来像是第二个不相关的问题。我建议你单独发布。
      猜你喜欢
      • 2011-08-05
      • 2014-10-09
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      • 2017-04-27
      相关资源
      最近更新 更多