問題タブ [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 - HDFStore: 列が配列内にあるかどうかを選択します
とりわけ、次の列を含むテーブルがあります。
bar
ここで、次の 2 つの値のいずれかを持つものを選択したいと思いました。
しかし、「バー」を変数として使用できないことを意味するこの例外が発生しました。
すべての変数参照は、軸への参照 (例: 'index' または 'columns')、または data_column でなければなりません。現在定義されている参照は次のとおりです: index,columns
でもコラムじゃない?
python - pandas.HDFStore: 既存のストアの "data_columns" を変更するにはどうすればよいですか? データ列以外の列にインデックスを追加したい
パンダを使用して大きな (120GB; 10 億行) HDF5 ファイルを作成しました。hdf ファイルを最初に作成した後、次のようにファイルに追加しました。
作成時のインデックス作成を避けるために、意図的に data_columns=[] を設定しました。HDF ファイルができたので、いくつかの列にインデックスを追加したいと思います (たとえば、columns_to_index=['A', 'B', 'C'])。
どういうわけか、私は現在持っている ptdump によるとdata_columns:=['A']
、それがどのように起こったか思い出せません。(おそらく、最初の df は別のパラメーターで書き込まれました (数日間にわたって hdfstore に追加を続けていたので、何かを変更した可能性があります)。いずれにせよ、これがどのように作成されたかに関係なく、追加のインデックスを作成したいと思います。列。
どうやら、単に呼び出すだけでmystore.create_table_index('all', columns=['A', 'B', 'C'], optlevel=9, kind='full')
は機能しません。初めて実行したときは 1 時間攪拌され、ファイルサイズに 2 GB が追加されました (メタデータを調べると、チャンクサイズが増加したことが示されます) が、3 つのインデックスすべてがありません (「A」のインデックスのみ)。3 つの列すべてのインデックスを生成するにはどうすればよいですか?
また、ptdump に次の行があることにも気付きました。non_index_axes := [(1, ['A', 'B', 'C'])]
パンダでインデックスを作成できない場合は、pytables で直接これを行う方法についてアドバイスをいただければ幸いです。(たとえば、最初に既存のインデックスを削除する必要がありますか? また、「non_index_axes」と「data_coumns」を変更するにはどうすればよいですか?)
編集:私のユースケースに関する質問を予想して、これが私が達成しようとしていることの全体像です:
CSV ファイルから 120 GB のデータを読み取ります。各ファイルは 1 日の財務データを表し、1 行あたり約 12 列の 100,000 行で構成されています。HDF5ファイルにすべての行を順番に保存しています。この初期フェーズをすばやく実行したいので、インデックス作成をオフにします。現在、各 CSV ファイルを 6 秒で読み取って解析し、上記のように HDF5 ファイルに保存するにはわずか 1.5 秒しかかかりません。
列 1 に特定の文字列があり、列 2 の日付が特定の範囲にあるすべてのアイテムを取得するなど、さまざまなクエリをサポートするために、少数の (すべてではない) 列にインデックスを付けます。
時間が経つにつれて、毎日新しい CSV ファイルを解析し、それを HDF5 ファイルに追加します。今後も指数が更新されることを期待しています。
(私のアクセスパターンによっては、行を格納する順序 (現在は日付順) が引き続き取得に最適な順序である可能性があります。また、ほとんどのクエリで別の列で並べ替える必要が生じる可能性もあります。その場合、私は考えます各 CSV ファイルが解析されて追加された後、テーブルを再ソートする必要があります。)
現在、列インデックスを生成するステップ 2 で立ち往生しています。
python - HDF5: 既存の HDF5 テーブルの列名を変更する方法はありますか?
Pandas を使用して、インデックス付きの大きな HDF5 テーブルを作成しました。テーブルの 12 列のうち 2 列の名前を変更したいと考えています。テーブルを再構築/再インデックスしないことをお勧めします。
これは、すべてのデータ (140GB) をコピーせずに実行できますか? ファイル内に、適切なコマンドで簡単に交換できるメタデータがいくつかあることを願っています。
これは、スペースを含む「非自然な」列名がいくつかあり、select ステートメントを実行しようとするまでこれが問題であることに気付かなかったため、私に思い浮かびました。
python - 複数の HDF5 ファイルを書き込むときに Windows で開いているファイルが多すぎる
私の質問は、HDF5 ファイルを書き込んだ後に無期限に閉じる方法です。
データを HDF5 ファイルに保存しようとしています。約 200 のフォルダーがあり、各フォルダーには今年の毎日のデータが含まれています。
HDFStore
iPython コンソールで次のコードを使用して pandasを使用してデータを取得して保存すると、しばらくすると関数が自動的に停止します (エラー メッセージは表示されません)。
同じスクリプトを実行してデータを再度ダウンロードしようとすると、次のように表示されます。
[Errno 24] 開いているファイルが多すぎます: ...
たとえばLinuxでulimit -n 1200を使用して問題を解決することを提案する投稿がいくつかありますが、残念ながら私はWindowsを使用しています。
その上、特にMethod 2では、クロージャーを使用して明示的にファイルを既に閉じていると思います。なぜiPythonはまだこれらのファイルを開いていると見なしているのでしょうか?
私のループは以下のようなものです:
hadoop - hdfsでブロックサイズを直接変更する方法
私のデータは、ブロックサイズが 256mb の hdfs に既にあります。ただし、このブロック サイズを 128 MB に変更する必要があります。hdfsでブロックサイズを直接変更する方法。
私は試した
しかし、私のデータはすでにhdfsにあります
pandas - 複数の pandas データフレームを 1 つのキー/グループの下で HDF5 オブジェクトに結合するにはどうすればよいですか?
サイズが 800 GB の大きな csv からデータを解析しています。データの行ごとに、これを pandas データフレームとして保存します。
ここで、これを HDF5 形式に保存し、h5 を csv ファイル全体であるかのようにクエリします。
これまでの私のアプローチは次のとおりです。
つまり、各データフレームdf
を 1 つのキーで HDF5 に保存しようとします。ただし、これは失敗します。
したがって、最初にすべてを 1 つの pandas データフレームに保存しようとすることができます。
HDF5形式に保存するようになりました
total_df
ただし、すべての csv 行を HDF5 形式に保存するための RAM/ストレージがあるとは思いません。
では、各「単一行」の df を HDF5 に追加して、最終的に 1 つの大きなデータフレーム (元の csv など) になるようにするにはどうすればよいですか?
編集: データ型が異なる csv ファイルの具体的な例を次に示します。
python - HDF5 min_itemsize エラー: ValueError: [y] 列に長さ [##] の文字列を格納しようとしていますが、この列には [##] の制限があります!
使用後に次のエラーが表示されますpandas.HDFStore().append()
pandas DataFrame を作成し、次のように HDF5 ファイルに追加しています。
上記のエラーが表示されます。
その後、次のコードを実行します。
出力する
values_block_0
ととは何values_block_1
ですか?
そこで、この StackOverflow Pandas pytable: how to specify min_itemsize of the elements of a MultiIndex に従って、試してみました
ただし、これは機能しません---今、次のエラーが発生します。
私は何を間違っていますか?
編集:このコードはエラーValueError: min_itemsize has the key [values_block_0] which is not an axis or data_column
を生成しますfilename.py
完全なエラーは次のとおりです。
python - PyTables のインデックス作成は pandas HDFStore (PyTables) のインデックス作成とどのように比較されますか
PyTables ライブラリと HDFStore オブジェクト (PyTables に基づく) はどちらも、ユーザーにインデックスを提供します。
PyTables だけの場合、次のように HDF5 ファイルを作成します (ドキュメントから)。
ユーザーは「Column.create_index()」を使用して列にインデックスを付けます
例えば:
後者の場合、ユーザーは HDFStore オブジェクトをインスタンス化してから、インデックスを作成する列を選択します。
ここでは、検索を最適化する 2 つの列にインデックスを付けます。
2 つの質問:
(1)実際には、PyTablesの例(最初の例)でインデックス(インデックス)を設定する方法が明確ではありません。上記で定義された列はありません。私の考えでは、identity、idnumber、speed の 3 つのフィールドがあります。速度とアイデンティティにインデックスを付けたいとしましょう。どうすればこれを行うことができますか?
(2) パンダ ベースのインデックス作成と PyTables ベースのインデックス作成の間にベンチマークはありますか? 一方は他方より速いですか?一方が他方よりも多くのディスク容量を占有しますか (つまり、より大きな HDF5 ファイル)?
python - Pandas HDF ファイルのサイズは、読み取りと書き込みで劇的に異なります
py Pandas df.to_hdf("test1.h5","t") 呼び出しで生成された HDF5 ファイル test1.h5 があります。ファイルサイズは 27M で、pandas データフレームであるキーは 1 つだけです。
データフレームのほとんどの dtypes は、1 つの int と string を持つ float32 です。
私を悩ませているのは、データフレームを別の HDF5 ファイル test2.h5 に再度保存すると、9.7M しかないことです。
読み取りと書き込みでサイズが異なる原因は何ですか? ありがとうございました。