タグ付けされた質問 「hdf5」

16
パンダを使用した「大容量データ」ワークフロー
私はパンダを学びながら何ヶ月もの間この質問への答えを困惑させようとしました。私は毎日の仕事にSASを使用しており、コア外のサポートに最適です。しかし、SASは他の多くの理由からソフトウェアの一部としては恐ろしいものです。 ある日、私はSASの使用をpythonとpandasに置き換えたいと思っていますが、現在、大規模なデータセットのコア外のワークフローが不足しています。私は、分散ネットワークを必要とする「ビッグデータ」ではなく、メモリに収まりきらないがハードドライブに収まるには小さすぎるファイルについて話しているのではありません。 私の最初の考えは、を使用HDFStoreしてディスク上に大きなデータセットを保持し、分析のために必要な部分のみをデータフレームにプルすることです。他の人たちは、MongoDBをより使いやすい代替として言及しました。私の質問はこれです: 以下を達成するためのいくつかのベストプラクティスワークフローは何ですか。 フラットファイルを永続的なディスク上のデータベース構造にロードする データベースをクエリしてデータを取得し、pandasデータ構造にフィードする パンダのピースを操作した後のデータベースの更新 実世界の例は、特に「大きなデータ」でパンダを使用するすべての人から高く評価されます。 編集-これが機能する方法の例: 大きなフラットファイルを繰り返しインポートし、永続的なディスク上のデータベース構造に保存します。これらのファイルは通常、大きすぎてメモリに収まりません。 Pandasを使用するために、メモリに収まるこのデータのサブセット(通常は一度に数列のみ)を読みたいと思います。 選択した列に対してさまざまな操作を実行して、新しい列を作成します。 次に、これらの新しい列をデータベース構造に追加する必要があります。 これらの手順を実行するためのベストプラクティスの方法を見つけようとしています。パンダとpytablesに関するリンクを読むと、新しい列を追加するのが問題になるようです。 編集-ジェフの質問への具体的な回答: 私は消費者信用リスクモデルを構築しています。データの種類には、電話、SSN、および住所の特性が含まれます。プロパティ値; 犯罪歴、破産などの軽蔑的な情報...私が毎日使用するデータセットには、混合データタイプの平均で1,000〜2,000のフィールドがあります。数値データと文字データの両方の連続変数、名義変数、順序変数です。行を追加することはめったにありませんが、新しい列を作成する多くの操作を実行します。 一般的な操作では、条件付きロジックを使用して複数の列を組み合わせて、新しい複合列を作成します。たとえば、if var1 > 2 then newvar = 'A' elif var2 = 4 then newvar = 'B'。これらの操作の結果は、データセット内のすべてのレコードの新しい列です。 最後に、これらの新しい列をディスク上のデータ構造に追加したいと思います。ステップ2を繰り返して、モデルに対する興味深い直感的な関係を見つけようとするクロス集計と記述統計を使用してデータを探索します。 通常のプロジェクトファイルは通常約1GBです。ファイルは、行が消費者データのレコードで構成されるような方法で編成されます。各行には、すべてのレコードで同じ数の列があります。これは常に当てはまります。 新しい列を作成するときに行ごとにサブセットを作成することは非常にまれです。ただし、レポートを作成したり、説明的な統計を生成したりするときに、行をサブセット化することはよくあることです。たとえば、特定の業種の単純なフリークエンシーを作成したい場合があります(小売クレジットカードなど)。これを行うには、レポートする列に加えて、基幹業務=小売のレコードのみを選択します。ただし、新しい列を作成するときは、データのすべての行と、操作に必要な列のみを取得します。 モデリングプロセスでは、すべての列を分析し、結果変数との興味深い関係を探し、それらの関係を記述する新しい複合列を作成する必要があります。私が探索する列は通常、小さなセットで行われます。たとえば、プロパティ値を扱う20列のセットに焦点を当て、それらがローンのデフォルトにどのように関連するかを観察します。それらが探索されて新しい列が作成されたら、次に大学教育などの別の列グループに進み、プロセスを繰り返します。私がやっていることは、私のデータといくつかの結果との関係を説明する候補変数を作成することです。このプロセスの最後に、これらの複合列から方程式を作成するいくつかの学習手法を適用します。 データセットに行を追加することはめったにありません。ほとんどの場合、新しい列(変数または統計/機械学習用語の機能)を作成します。

1
(フラットバイナリファイルの代わりに)大規模アレイストレージにHDF5を使用することには、分析速度やメモリ使用の利点がありますか?
大きな3Dアレイを処理しています。さまざまなデータ分析を行うために、さまざまな方法でスライスする必要があることがよくあります。典型的な「キューブ」は最大100GBになる可能性があります(将来的にはさらに大きくなる可能性があります) Pythonの大規模なデータセットの一般的な推奨ファイル形式は、HDF5(h5pyまたはpytables)を使用することです。私の質問は、HDF5を使用してこれらのキューブを単純なフラットバイナリファイルに保存するよりも保存および分析することで、速度やメモリ使用のメリットはありますか?HDF5は、操作しているような大きな配列とは対照的に、表形式のデータに適していますか?HDF5は適切な圧縮を提供できることがわかりますが、処理速度とメモリオーバーフローの処理により関心があります。 キューブの1つの大きなサブセットのみを分析したいことがよくあります。pytablesとh5pyの両方の欠点の1つは、配列のスライスを取得すると、常にメモリを使い切ってnumpy配列が返されることです。ただし、フラットバイナリファイルの面倒なmemmapをスライスすると、ディスクにデータを保持するビューを取得できます。したがって、メモリを使い果たすことなく、データの特定のセクターをより簡単に分析できるようです。 私はpytablesとh5pyの両方を調査しましたが、これまでのところ、どちらの目的でも自分の目的に役立つことはありません。
96 python  numpy  hdf5  pytables  h5py 

2
オプションの依存関係「テーブル」がありません。パンダでto_hdf
次のコードは私にエラーを与えています。 import pandas as pd df = pd.DataFrame({'a' : [1,2,3]}) df.to_hdf('temp.h5', key='df', mode='w') これは私にエラーを与えています。 オプションの依存関係「テーブル」がありません。テーブルをインストールするには、pipまたはcondaを使用します。 ImportErrorを既に試し ましたHDFStoreにはPyTablesが必要ですテーブルという名前のモジュールはありません。まだ同じエラー。 hdfファイルを読み取るときに同じエラーが発生します。そしてtables、私のPython用にすでにインストールされています。 一部のバージョン情報。 python 3.7.4 パンダ0.25.2 ウインドウズ10 PS:これはrepl https://repl.it/で再現できます。 更新: フォローしてみました。 import tables このエラーが発生しました: ImportError:['hdf5.dll'、 'hdf5dll.dll']をロードできませんでした。システムパスにあることを確認してください。 パンダはこれについて正確なメッセージを出していないようです。実際に存在する場合、依存関係が欠けていると言っています。 誰かがこれを解決する方法を知っているなら。それが役立ちます。
8 python  pandas  pip  hdf5  pytables 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.