4

私はいくつかの大規模な財務データセットのパンダとパイテーブルをテストしていて、実際の障害に遭遇しました:

pytablesファイルに保存する場合、パンダは多次元データを列ではなく非常に長い行に保存しているように見えます。

これを試して:

from pandas import *
df = DataFrame({'col1':randn(100000000),'col2':randn(100000000)})
store = HDFStore('test.h5')
store['data'] = df    #should be a warning here about exceeding the maximum recommended rowsize
store.handle

出力:

File(filename=test7.h5, title='', mode='a', rootUEP='/', filters=Filters(complevel=0, shuffle=False, fletcher32=False))
/ (RootGroup) ''
/data (Group) ''
/data/axis0 (Array(2,)) ''
  atom := StringAtom(itemsize=4, shape=(), dflt='')
  maindim := 0
  flavor := 'numpy'
  byteorder := 'irrelevant'
  chunkshape := None
/data/axis1 (Array(100000000,)) ''
  atom := Int64Atom(shape=(), dflt=0)
  maindim := 0
  flavor := 'numpy'
  byteorder := 'little'
  chunkshape := None
/data/block0_items (Array(2,)) ''
  atom := StringAtom(itemsize=4, shape=(), dflt='')
  maindim := 0
  flavor := 'numpy'
  byteorder := 'irrelevant'
  chunkshape := None
/data/block0_values (Array(2, 100000000)) ''
  atom := Float64Atom(shape=(), dflt=0.0)
  maindim := 0
  flavor := 'numpy'
  byteorder := 'little'
  chunkshape := None

完全にはわかりませんが、エラーメッセージと組み合わせると、Array(2,100000000)は、2行1億列の2D配列を意味すると思います。これは、HDFViewに表示される方法でもあります。

パフォーマンスが極端に低下しました(data ['ticks']。head()の場合は10秒)。これが原因ですか?

4

1 に答える 1

4

GitHubでこの問題をクロスリンクしました:

http://github.com/pydata/pandas/issues/1824

私はこの問題に個人的には気づいていませんでした。率直に言って、これがPyTablesまたはHDF5(原因者)の問題であることは少し残念です。

于 2012-08-29T22:38:41.550 に答える