3

バックグラウンド

私は ak の n 次元の時系列を持っており、それぞれが float 値 (n 列と日付を表す 1 列) を保持する mx (n+1) 配列として表されます。

例:

k (約 400 万) の時系列

20100101    0.12    0.34    0.45    ...
20100105    0.45    0.43    0.21    ...
...         ...     ...     ... 

毎日、データ セットのサブセット (< k) に追加の行を追加したいと考えています。すべてのデータセットは、1 つのhd5f ファイルにグループで保存されます。

質問

行をデータセットに追加する最も時間効率の良い方法は何ですか?

入力は次のような CSV ファイルです。

key1, key2, key3, key4, date, value1, value2, ... 

日付は特定のファイルに対して一意であり、無視できます。私は約400万のデータセットを持っています。問題は、キーを検索し、完全な numpy 配列を取得し、配列のサイズを変更し、行を追加して、配列を再度保存する必要があることです。hd5f ファイルの合計サイズは約 100 GB です。これをスピードアップする方法はありますか?SQLite などを使用してもうまくいかないことに同意できると思います。すべてのデータを取得するとすぐに、平均的なデータ セットには 100 万要素× 400 万データ セットが含まれます。

ありがとう!

4

1 に答える 1

0

PyTablesを見たことがありますか?HDF5 ライブラリの上に構築された階層型データベースです。

いくつかの配列タイプがありますが、「テーブル」タイプはデータ形式で機能するように聞こえます。これは基本的に、NumPy レコード配列のディスク上のバージョンであり、各列は一意のデータ型にすることができます。テーブルには、追加の行を簡単に追加できる append メソッドがあります。

CSV ファイルからデータをロードする限り、numpy.loadtxt は非常に高速です。ファイルを NumPy レコード配列としてメモリにロードします。

于 2011-03-19T04:31:49.847 に答える