46

私は多くの統計作業を行っており、Python をメイン言語として使用しています。私が扱っているデータ セットの中には 20 GB のメモリを必要とするものもあるため、numpy、scipy、および PyIMSL でインメモリ関数を使用してそれらを操作することはほとんど不可能です。統計分析言語 SAS には、厳密なインメモリ処理とは対照的に、ハードディスクからのデータを操作できるという大きな利点があります。しかし、(さまざまな理由で) SAS で大量のコードを記述する必要がないようにしたいため、Python でどのようなオプションがあるかを判断しようとしています (ハードウェアとメモリを追加購入する以外に)。

map-reduce のようなアプローチは、完全なデータ セットを操作する必要があるため (分位数の計算やロジスティック回帰モデルのフィッティングなど) 、私の作業の多くには役立たないことを明確にしておく必要があります。

最近、 h5pyをいじり始めましたが、numpy/scipy/matplotlib などを活用しながら、Python が SAS のように動作し、(hdf5 ファイルを介して) ディスクからのデータを操作できるようにするための最良のオプションだと思います。同様の設定で Python と h5py を使用した経験があるかどうか、また彼らが発見したことを知りたいです。これまでSASが支配していた「ビッグデータ」設定でPythonを使用できた人はいますか?

編集:ハードウェア/メモリを追加購入することは確かに役立ちますが、IT の観点からは、Python (または R、または MATLAB など) がデータをメモリに保持する必要がある場合に、巨大なデータ セットを分析する必要がある組織に Python を販売することは困難です。 . ディスクベースの分析は遅くなる可能性がありますが、巨大なデータ セットを自信を持って処理できるため、SAS は引き続き強力なセールス ポイントを持っています。ですから、Stackoverflow の専門家が、Python を主要なビッグデータ分析言語として使用することに関して認識されているリスクを軽減する方法を理解するのに役立つことを願っています。

4

2 に答える 2

49

データ分析を行うために、Python を h5py、numpy/scipy、boost::python と組み合わせて使用​​します。私たちの典型的なデータセットのサイズは、最大で数百 GB です。

HDF5 の利点:

  • データは、h5view アプリケーション、h5py/ipython、および h5* コマンドライン ツールを使用して便利に検査できます。
  • API はさまざまなプラットフォームと言語で利用可能
  • グループを使用してデータを構造化する
  • 属性を使用してデータに注釈を付ける
  • 安心の組み込みデータ圧縮
  • 単一のデータセットの io は高速です

HDF5 の落とし穴:

  • h5 ファイルに含まれるデータセット/グループが多すぎる (> 1000) 場合、それらのトラバースが非常に遅くなるため、パフォーマンスが低下します。一方、io はいくつかの大きなデータセットに対して高速です。
  • 高度なデータ クエリ (SQL のようなもの) は実装が面倒で遅い (その場合は SQLite を検討してください)
  • HDF5 はすべてのケースでスレッドセーフではありません: ライブラリが正しいオプションでコンパイルされていることを確認する必要があります
  • h5 データセットを変更 (サイズ変更、削除など) すると、ファイル サイズが大きくなる (最良の場合) か、または不可能になる (最悪の場合) (h5 ファイル全体をコピーして再度平坦化する必要があります)。
于 2011-02-02T12:59:43.470 に答える
5

私は統計に Python を使用せず、比較的小さなデータセットを扱う傾向がありますが、R でのハイ パフォーマンス コンピューティング、特に「大容量メモリとメモリ不足データ」セクション。

3 つの理由:

  • これらのパッケージのソースコードを調べて、一般的に役立つアイデアを見つけることができます
  • パッケージ名は、同等の Python を検索するのに役立つ場合があります。多くの R ユーザーは Python ユーザーでもあります
  • 状況によっては、上記のリンクされたパッケージのいずれかを使用して特定の分析のために R にリンクし、結果を Python に戻すと便利な場合があります。

繰り返しますが、これは私の考えから外れていることを強調しておきます。あなたがすでにこれらすべてを知っている可能性は確かにあります。しかし、おそらくこれは、あなたや同じ問題に取り組んでいる人にとって役立つでしょう.

于 2011-02-02T20:04:01.850 に答える