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依存関係がインストールされていると思います。パンダはあなたの例を適切に解析します:

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 に答える