2016-10-12 2 views
1

私は、パンダでできるだけ早く読む必要のある小さな(通常は1K行と10列以下の)テーブルがたくさんあります。ユースケースはかなり一般的です。関数はこれらのテーブルを一度に1つずつ読み込み、何かを計算し、最終結果を格納します(テーブルの内容をメモリに保持しない)。パンダのための多くの小さなデータテーブルI/O?

これは何度もやり遂げられており、最高の(スピード)パフォーマンスを得るために、これらのテーブルの格納形式を選択できます。 natively supportedの保存形式は最も速いですか?

+2

圧縮形式でデータを保存したい場合、私は[HDF5](http://pandas.pydata.org/pandas-docs/stable考えます/io.html#hdf5-pytables)が最適です。 – jezrael

+0

直感的に、私は@ jezraelに同意するでしょう。最終的にはあなたのデータに依存するかもしれないので、私はそれを試して適切にベンチマークするだけです。 – cel

答えて

1

IMOこの場合、いくつかのオプションがあります:

  1. @jezrael has already suggestedとしてHDFストア(AKA PyTable、H5)を使用します。あなたは

  2. は新しいとFeather-Format (part of the Apache Arrow project)非常に高速な使用あなたがグループにあなたのテーブルの一部/すべてをしたいかどうかを決定し、異なる識別子を使用して同じ.h5ファイルに保存(またはパンダの用語でkeys)することができます。注記:それはまだ少し新しいフォーマットなので、そのフォーマットは将来変更される可能性があり、異なるバージョンのフェザーフォーマットモジュール間で互換性がなくなる可能性があります。 1つのfeatherファイルに複数のDFを置くことはできないため、グループ化することはできません。

  3. テーブルを格納/読み取りするデータベースを使用します。 PSの場合、使用するケースが遅くなる可能性があります。

あなたはまた、特にthis comparisonをチェックすることもできますPSあなたは

+0

ありがとう!一緒に使用するつもりはないので(同じ機能スコープ内で)、h5フォーマットのテーブルを組み合わせることの利点はありますか? – user189035

+0

@ user189035、1つの明確な利点は少ないファイル量です。しかし、それらを__small__グループにグループ化できない場合(たとえば、日付/月/顧客IDなどでグループ化した場合)、H5ファイルが非常に高速になり、非常に大規模なグループに使用するべきではありませんサイズを小さくするのは難しいです... – MaxU

+0

各場所/日に1つのファイルがあります。各ファイルをロードして、一連の数値を取得します(線形プログラムを使用して)。私は場所か日によってそれらにアクセスできます(計算は各ファイルで独立して行われます)。だからあなたのアドバイスは、これらのすべての小さなファイルを場所(200)か日(5000)のいずれかでグループ化することです。そうすることで読み込み時間が短縮されますか? – user189035

関連する問題