3

次の形式の「CSV」データファイルがあります(まあ、むしろTSVです):

イベント pdg xyzt px py pz ekin
3383 11 -161.515 5.01938e-05 -0.000187112 0.195413 0.664065 0.126078 -0.736968 0.00723234  
1694 11 -161.515 -0.000355633 0.000263174 0.195413 0.511853 -0.523429 0.681196 0.00472714  
4228 11 -161.535 6.59631e-06 -3.32796e-05 0.194947 -0.713983 -0.0265468 -0.69966 0.0108681   
4233 11 -161.515 -0.000524488 6.5069e-05 0.195413 0.942642 0.331324 0.0406377 0.017594

このファイルはそのままで解釈可能ですpandas:

from pandas import read_csv, read_table
data = read_csv("test.csv", sep="\t", index_col=False)     # Works
data = read_table("test.csv", index_col=False)             # Works

ただし、それを読み込もうとするとblaze(pandas キーワード引数を使用することを宣言します)、例外がスローされます。

from blaze import Data 
Data("test.csv")                             # Attempt 1
Data("test.csv", sep="\t")                   # Attempt 2
Data("test.csv", sep="\t", index_col=False)  # Attempt 3

これらの作品やパンダは一切使用されていません。列の名前と型を推測しようとする「スニファー」はcsv.Sniffer.sniff()、標準ライブラリから呼び出すだけです (これは失敗します)。

このファイルを blaze で適切に読み取る方法はありますか (その「弟」が数百 MB であるため、blaze の順次処理機能を使用したいと考えています)。

アイデアをありがとう。

編集: odo/csv の問題かもしれないと思い、問題を提出しました: https://github.com/blaze/odo/issues/327

Edit2: 完全なエラー:

() 内のエラー トレースバック (最新の呼び出しが最後) ----> 1 bz.Data("test.csv", sep="\t", index_col=False)

/home/[username-hidden]/anaconda3/lib/python3.4/site-packages/blaze/interactive.py in Data(data, dshape, name, fields, columns, schema, **kwargs)
     54 if isinstance(data, _strtypes):
     55 データ = リソース (データ、スキーマ = スキーマ、dshape = dshape、列 = 列、
---> 56 **kwargs)
     57 if (isinstance(data, Iterator) and
     58 not isinstance(data, tuple(not_an_iterator))):

/home/[username-hidden]/anaconda3/lib/python3.4/site-packages/odo/regex.py in __call__(self, s, *args, **kwargs)
     62
     63 def __call__(self, s, *args, **kwargs):
---> 64 return self.dispatch(s)(s, *args, **kwargs)
     65
     66 @プロパティ

/home/[username-hidden]/anaconda3/lib/python3.4/site-packages/odo/backends/csv.py in resource_csv(uri, **kwargs)
    276 @resource.register('.+\.(csv|tsv|ssv|data|dat)(\.gz|\.bz2?)?')
    277 デフ resource_csv(uri, **kwargs):
--> 278 リターン CSV(uri, **kwargs)
    279
    280

/home/[username-hidden]/anaconda3/lib/python3.4/site-packages/odo/backends/csv.py in __init__(self, path, has_header, encoding, sniff_nbytes, **kwargs)
    has_header が None の場合は 102:
    103 self.has_header = (not os.path.exists(パス) または
--> 104 infer_header (パス、sniff_nbytes))
    105 その他:
    106 セルフ.has_header = has_header

/home/[username-hidden]/anaconda3/lib/python3.4/site-packages/odo/backends/csv.py in infer_header(パス、nbytes、エンコーディング、**kwargs)
     58 f として open_file(path, 'rb') を使用:
     59 raw = f.read(nbytes)
---> 60 return csv.Sniffer().has_header(raw if PY2 else raw.decode(encoding))
     61
     62

/home/[username-hidden]/anaconda3/lib/python3.4/csv.py in has_header(self, sample)
    392 # 最初の行がヘッダーである可能性から減算します。
    393
--> 394 rdr = reader(StringIO(サンプル), self.sniff(サンプル))
    395
    396 header = next(rdr) # 最初の行がヘッダーであると仮定

/home/[username-hidden]/anaconda3/lib/python3.4/csv.py in sniff(self, sample, delimiters)
    187
    デリミタでない場合は 188:
--> 189 raise Error("区切り文字を特定できませんでした")
    190
    191類方言(方言):

エラー: 区切り文字を判別できませんでした
4

1 に答える 1