問題タブ [hdfstore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pandas HDFStoreはメモリからデータフレームをアンロードします
OK、pandas を使って、4,000 万行以上、150 列以上の 30GB の csv ファイルを HDFStore にロードする実験を行っています。列の大部分は文字列で、その後に数値と日付が続きます。
これまで numpy、pandas、または pytables を実際に使用したことはありませんが、R でデータ フレームをいじったことがあります。
現在、約 20000 行のサンプル ファイルを HDFStore に保存しています。HDFStore からテーブルを読み取ろうとすると、テーブルがメモリに読み込まれ、メモリ使用量が最大 100MB 増加します
次に、DataFrame を含む変数を削除します。
メモリ使用量が約5MB減少した時点で
を使用して g にデータを再度ロードするg=f['df']
と、メモリ使用量がさらに 100MB 増加します。
クリーンアップは、実際にウィンドウを閉じたときにのみ発生します。
データを編成する方法として、メモリに収まる最大テーブル サイズが約 1 GB の個々のテーブルにデータを分割し、一度に 1 つずつ使用するつもりです。ただし、メモリをクリアできない場合、このアプローチは機能しません。
どうすればこれを達成できるかについてのアイデアはありますか?
python - where を使用したインデックスによる HDFStore からの行の選択
HDFStore にインデックス付きの frame_table として格納されている user_ids を持つデータ フレームがあります。また、この HDF ファイルには、ユーザーが実行したアクションを含む別のテーブルがあります。1% のユーザーが行ったすべてのアクションを取得したいと考えています。手順は次のとおりです。
ここで、戻って、df_user_id として同じインデックスが付けられた frame_tables から、これらのユーザーが実行したアクションを説明するすべての追加情報を取得したいと考えています。この例とこの質問に従って、私は次のことを行いました:
これは単に空のデータ フレームを提供します。実際、前の pandas docリンクの例をコピーして貼り付けると、空のデータ フレームも取得されます。Term
最近のパンダで何か変わった?私はパンダ0.12を使用しています。
私は特定の解決策に縛られていません。df_id テーブル (高速) のルックアップから hdfstore インデックスを取得し、それらのインデックスを他のフレーム テーブルから直接取得できる限り。
python - HDFStore ディレクトリの誤りからの回復
新しい HDFStore を作成し、その中に何かを入れます。
IPython を再起動すると、「誤って」このシナリオで、間違ったディレクトリからストアを開こうとします。
おっとっと!私の間違いに気づき、正しいディレクトリに移動し、正しいディレクトリに座っている間に変数をcd
再割り当てします。store
私の質問: ここで何が起こったのですか? 誤って間違ったディレクトリからストアにアクセスしようとした後、正しいディレクトリからストアを開くことができないのはなぜですか? 以下では、最初に間違ったディレクトリで開かずにファイルを開くと、実際にはそこにあり、すべてがうまくいっていることがわかります。
これはある種の文脈上の問題ですか?私は途方に暮れています。この不注意な間違いは、私が集団意識に陥るほど頻繁に起こります。ありがとう!
更新しました
これは HDFStore のバグだと思います。cd
正しく動作しているようです。これが CSV で正常に機能することを確認してください。
Jeff の提案に従って試してみると!cd
、予期しない IPython の動作が明らかになりました。
hadoop - 単一の Hadoop ノードに複数のレコードを書き込む方法
Hadoop の問題についてサポートが必要です。
私の Java システムには、n 個のレコードを作成する関数があります。各レコードは明らかに、Hadoop のテキスト ファイルに書き込む行です。
問題は、 n 個のレコードすべてを同じ Hadoop ノード
に保存するにはどうすればよいかということです。言い換えれば、n 個のレコードが一意のレコードのように見えるようにして、これらのレコードの 1 つ (またはそのレプリカの 1 つ) がノード上にある場合、もちろん他のn-1 個のレコードもオンになるようにします。同じノード。
たとえば、関数が次のものを作成するとします。
この 3 つのレコード (3 行) を Hadoop のテキスト ファイルに追加すると、record1 が node1 に、record2 が node2 に、record3 が node3 に移動する可能性があります。3 つのレコードすべてが node2 などの同じノードに格納され、異なるノードに格納されていないことを確認する方法があるかどうかを知りたいです。
ご清聴ありがとうございました。
pandas - pandas HDFStore の PyTables ノードが表形式かどうかを確認する
pandas HDFStore の PyTables ノードが表形式であるかどうかを確認する好ましい方法はありますか? これは機能NoSuchNodeError
しますが、API の一部とは思えないので、これに頼るべきではないかもしれません。
pandas - リスト内のメンバーシップをチェックするための HDFStore Term メモリ効率的な方法
選択しようとしている pandas HDFStore があります。大きな np.array の id を持つ 2 つのタイムスタンプの間でデータを選択したいと思います。次のコードは機能しますが、リスト内のメンバーシップを照会した場合にのみメモリを大量に消費します。datetimeindex と範囲を使用すると、メモリ使用量が 95% 少なくなります。
HDFStore でこれを行うメモリ効率の良い方法はありますか? インデックスを「sec_id」に設定する必要がありますか? (chunksize オプションを使用して自分で連結することもできますが、これはちょっとハックのようです。)
編集:
hdfstore は、pd.HDFStore によってデータフレームを作成し、このように格納することによって作成されます。さっき間違えた
リクエストに応じて、このテーブルの ptdump を次に示します: https://gist.github.com/MichaelWS/7980846 また、df を次に示します: https://gist.github.com/MichaelWS/7981451
python - HDFStore ファイルを使用するスレッドセーフおよび例外セーフな方法
次のコード スニペット:
Web リクエストに応答して実行されるため、複数のスレッドで同時に実行される可能性があります。また、store.close が呼び出される前に実行が中断される可能性もあります。
再現できない問題 (HDFStore ライブラリの例外、または空のデータが返される) が発生しています。
このコードをスレッドセーフにし、例外が発生したときにファイルが正しく閉じられるようにする正しい方法は何ですか?
調査の結果、HDFStore には開いているファイルのキャッシュ メカニズムがあることがわかりました。これが問題なのでしょうか?