GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

blaze

blaze – Big DataへのNumPyとPandasインターフェース

投稿日:

Big DataへのNumPyとPandasインターフェース http://blaze.pydata.org

Blazeは、変更されたNumPyとPandasのような構文のサブセットをデータベースや他のコンピューティングシステムに変換します。 Blazeは、Pythonユーザが他のデータストレージシステムに存在するデータを照会するための使い慣れたインタフェースです。

私たちは、外部データベース(PostgreSQL)のシンプルなデータセットを指します。 即座に、パンダのデータフレームに表示されるように結果が表示されます。

>>> import blaze as bz
>>> iris = bz.Data('postgresql://localhost::iris')
>>> iris
    sepal_length  sepal_width  petal_length  petal_width      species
0            5.1          3.5           1.4          0.2  Iris-setosa
1            4.9          3.0           1.4          0.2  Iris-setosa
2            4.7          3.2           1.3          0.2  Iris-setosa
3            4.6          3.1           1.5          0.2  Iris-setosa

これらの結果は直ちに発生します。 BlazeはPostgresからデータを引き出すのではなく、PythonコマンドをSQL(またはその他のもの)に変換します。

>>> iris.species.distinct()
           species
0      Iris-setosa
1  Iris-versicolor
2   Iris-virginica

>>> bz.by(iris.species, smallest=iris.petal_length.min(),
...                      largest=iris.petal_length.max())
           species  largest  smallest
0      Iris-setosa      1.9       1.0
1  Iris-versicolor      5.1       3.0
2   Iris-virginica      6.9       4.5

この同じ例は、広範囲のデータベース、ディスク上のテキストまたはバイナリファイル、またはリモートデータで動作していました。

どんなブレイズでもない

Blazeは計算を実行しません。 SQL、Spark、Pandasなどの他のシステムを利用して、実際の数値処理を実行します。 これらのシステムの代替品ではありません。

BlazeはNumPy / Pandas API全体を実装するのではなく、NumPy / Pandasで動​​作するように設計されたライブラリと対話しません。 これは、より大規模なデータシステムを使用するコストです。

Blazeは、大規模なデータベースにあるデータを検査し、そのデータを照会するための小さくて強力な操作を実行し、結果をお気に入りのPythonツールに適した形式に変換するための良い方法です。

要旨

Blazeは、実行したい計算を分離します。

>>> accounts = Symbol('accounts', 'var * {id: int, name: string, amount: int}')

>>> deadbeats = accounts[accounts.amount < 0].name

データの表現から

>>> L = [[1, 'Alice',   100],
...      [2, 'Bob',    -200],
...      [3, 'Charlie', 300],
...      [4, 'Denis',   400],
...      [5, 'Edith',  -500]]

Blazeを使用すると、データ指向の問題を解決できます

>>> list(compute(deadbeats, L))
['Bob', 'Edith']

しかし、データと表現の分離は、異なるバックエンド間で切り替えることを可能にします。

ここではPure Pythonの代わりにPandasを使用して同じ問題を解決します。

>>> df = DataFrame(L, columns=['id', 'name', 'amount'])

>>> compute(deadbeats, df)
1      Bob
4    Edith
Name: name, dtype: object

Blazeはこれらの結果を計算しませんが、Blazeは他のプロジェクトをインテリジェントに駆動して代わりに計算します。 これらのプロジェクトには、単純なPure Pythonイテレータから強力な分散型Sparkクラスタまで幅広く含まれています。 Blazeは、進化するにつれて新しいシステムに拡張されるように構築されています。

入門

BlazeはcondaまたはPyPIで利用可能です

conda install blaze
pip install blaze

開発ビルドはアクセス可能です

conda install blaze -c blaze
pip install http://github.com/blaze/blaze --upgrade

ドキュメントチュートリアルブログポストメーリングリストのアーカイブを表示することができます

開発のセットアップ

すべてのBlaze依存関係をcondaインストールする最も簡単な方法は次のとおりです

conda install blaze spark -c blaze -c anaconda-cluster -y
conda remove odo blaze blaze-core datashape -y

これらのコマンドを実行した後、 datashapeblazedatashapeをGitHubから直接クローンします。 これらの3つのプロジェクトが一緒にリリースされます。 python setup.py develop実行python setup.py developと、それぞれの開発python setup.py developインストールされます。

ライセンス

BSDライセンスでリリースされました。 詳細については、 LICENSE.txtを参照してください。

Blaze開発はContinuum Analyticsの後援を受けています。







-blaze

執筆者: