問題タブ [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 - チャンクサイズを使用して、推論されたデータフレーム タイプを繰り返し取得する
pd.read_csv() を使用してファイルを繰り返しチャンクし、データセット全体を一度に読み取ったかのように dtype やその他のメタ情報を保持するにはどうすればよいですか?
大きすぎてメモリに収まらないデータセットを読み込む必要があります。pd.read_csv を使用してファイルをインポートし、すぐにチャンクを HDFStore に追加したいと思います。ただし、データ型の推論では、後続のチャンクについては何もわかりません。
テーブルに格納された最初のチャンクに int のみが含まれ、後続のチャンクに float が含まれている場合、例外が発生します。そのため、最初に read_csv を使用してデータフレームを反復処理し、推定された最高の型を保持する必要があります。さらに、オブジェクト型の場合、これらはテーブルに文字列として格納されるため、最大長を保持する必要があります。
データセット全体を読み取らずに、この情報のみを保持するパドニックな方法はありますか?
python - HDFStore 例外: 正しい原子タイプが見つかりません: 基本的なケース
「 HDFStore 例外のトラブルシューティング方法: 正しいアトム タイプが見つかりません」で提起されたものと同じ問題に直面しています。
pandas のドキュメントStoring Mixed Types in a Table に示されている例に減らします。
この例の要点は、append
aDataFrame
に欠損値がいくつかあることHDFStore
です。サンプルコードを使用すると、atom type error
.
リンクされた投稿(ジェフの回答)で提案されているようdtype
に、問題のあるタイプ(実際にはタイプ)を強制しても、同じエラーが発生します。object
ここで何が欠けていますか?
洞察をありがとう
解決した
私は 0.10 を使用していて、 0.11-devpandas
に切り替えました。Jeff が推測したように、問題はNaN と NaTにありました。
以前の pandas バージョンが作成されました
一方、後者のバージョン
python - HDFStore: table.select と RAM の使用量
約 1 GB の HDFStore テーブルからランダムな行を選択しようとしています。約 50 のランダムな行を要求すると、RAM の使用量が爆発的に増加します。
私はパンダを使用しています0-11-dev, python 2.7, linux64
。
この最初のケースでは、RAM 使用量は次のサイズに適合します。chunk
この 2 番目のケースでは、テーブル全体が RAM にロードされているようです。
この最後のケースでは、RAM 使用量は同等のchunk
サイズに適合します。
なぜ 30 行から 40 行にランダムに移動すると、RAM 使用量が劇的に増加するのか、私は困惑しています。
テーブルは、次のコードを使用して index=range(nrows(table)) のように作成されたときにインデックス付けされていることに注意してください。
洞察をありがとう
編集して答える
これは、Train.csv を train.h5 に書き込むために使用したファイルです。これは、 How to trouble-shoot HDFStore Exception: cannot find the correct atom typeの Zelazny7 のコードの要素を使用して作成しました。
として適用
python - Pandas HDFStore に大量のデータを追加し、自然な一意のインデックスを取得するにはどうすればよいですか?
統計処理のために大量の http ログ (80GB 以上) を Pandas HDFStore にインポートしています。1 つのインポート ファイル内であっても、コンテンツを読み込むときにバッチ処理を行う必要があります。これまでの私の戦術は、解析された行を DataFrame に読み込み、DataFrame を HDFStore に格納することでした。私の目標は、DataStore 内の単一のキーに対して一意のインデックス キーを作成することですが、各 DataFrame は独自のインデックス値を再起動します。HDFStore.append() には、DataFrame インデックス値を無視し、HDFStore キーの既存のインデックス値に追加し続けるように指示するメカニズムがあると予想していましたが、それを見つけることができないようです。HDFStore に既存のインデックス値をインクリメントさせながら、DataFrame をインポートしてそこに含まれるインデックス値を無視するにはどうすればよいですか? 以下のサンプル コードは、10 行ごとにバッチ処理を行います。当然実物はもっと大きいでしょう。
python - 数百万行のディスク上のテーブルをマージする際の問題
TypeError: データの内容が [空の] オブジェクト dtype であるため、列 [日付] をシリアル化できません。
こんにちはSO!現在、それぞれ 1 つのノードを含む 2 つの大きな HDFStore があり、両方のノードがメモリに収まりません。ノードには NaN 値が含まれていません。ここで、これを使用してこれら 2 つのノードをマージしたいと思います。すべてのデータが 1 つのチャンクに収まる小さなストアで最初にテストされ、これは正常に機能していました。しかし、チャンクごとにマージする必要があり、次のエラーが表示される場合がありますTypeError: Cannot serialize the column [date], because its data contents are [empty] object dtype
。
これは私が実行しているコードです。
私が気づいたこと、それは私が pandas_version:= '0.10.1' にいると述べていますが、私の pandas バージョンは 0.12.0rc1 です。ノードのさらに具体的な情報:
チャンクサイズが 500000 で、Atemp のノードの形状が 823446 であるため、少なくとも 1 つのチャンクがマージされていることがわかります。しかし、エラーがどこから来ているのかわかりません。また、正確にどこが間違っているのかを発見しようとする手がかりも不足しています。どんな助けでも大歓迎です..
編集
テストストアのチャンクサイズを減らすと、同じエラーが発生します。もちろん良くはありませんが、今では共有する可能性があります。コード + HDFStores については、ここをクリックしてください。