Blaze translates a subset of modified NumPy and Pandas-like syntax to databases and other computing systems. Blaze allows Python users a familiar interface to query data living in other data storage systems.
Example
We point blaze to a simple dataset in a foreign database (PostgreSQL). Instantly we see results as we would see them in a Pandas DataFrame.
>>> 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
These results occur immediately. Blaze does not pull data out of Postgres, instead it translates your Python commands into SQL (or others.)
>>> 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
This same example would have worked with a wide range of databases, on-disk text or binary files, or remote data.
What Blaze is not
Blaze does not perform computation. It relies on other systems like SQL, Spark, or Pandas to do the actual number crunching. It is not a replacement for any of these systems.
Blaze does not implement the entire NumPy/Pandas API, nor does it interact with libraries intended to work with NumPy/Pandas. This is the cost of using more and larger data systems.
Blaze is a good way to inspect data living in a large database, perform a small but powerful set of operations to query that data, and then transform your results into a format suitable for your favorite Python tools.
In the Abstract
Blaze separates the computations that we want to perform:
>>> accounts = Symbol('accounts', 'var * {id: int, name: string, amount: int}')
>>> deadbeats = accounts[accounts.amount < 0].name
From the representation of data
>>> L = [[1, 'Alice', 100],
... [2, 'Bob', -200],
... [3, 'Charlie', 300],
... [4, 'Denis', 400],
... [5, 'Edith', -500]]
Blaze enables users to solve data-oriented problems
>>> list(compute(deadbeats, L))
['Bob', 'Edith']
But the separation of expression from data allows us to switch between different backends.
Here we solve the same problem using Pandas instead of Pure Python.
>>> df = DataFrame(L, columns=['id', 'name', 'amount'])
>>> compute(deadbeats, df)
1 Bob
4 Edith
Name: name, dtype: object
Blaze doesn’t compute these results, Blaze intelligently drives other projects to compute them instead. These projects range from simple Pure Python iterators to powerful distributed Spark clusters. Blaze is built to be extended to new systems as they evolve.
Getting Started
Blaze is available on conda or on PyPI
conda install blaze pip install blaze
Development builds are accessible
conda install blaze -c blaze pip install http://github.com/blaze/blaze --upgrade
You may want to view the docs, the tutorial, some blogposts, or the mailing list archives.
Development setup
The quickest way to install all Blaze dependencies with conda is as follows
conda install blaze spark -c blaze -c anaconda-cluster -y conda remove odo blaze blaze-core datashape -y
After running these commands, clone odo, blaze, and datashape from GitHub directly. These three projects release together. Run python setup.py develop to make development installations of each.
License
Released under BSD license. See LICENSE.txt for details.
Blaze development is sponsored by Continuum Analytics.
Metadata
Release files for blaze 0.10.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| blaze-0.10.1.tar.gz | 472.5 kB | Without provenance | Details for blaze-0.10.1.tar.gz |
Release files / blaze-0.10.1.tar.gz
| Download URL | blaze-0.10.1.tar.gz |
|---|---|
| Size | 472.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
50a60c8d52c679a6a21d6c689841f032b5dbd6eb5a2ecfaf308aff57f4b7a19a
|
|
BLAKE2b-256 checksum How to use checksums |
a199ec4fc29409d68d83a2138b190722f74d15ca1ca303b5c055171b22baa4c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for blaze 0.10.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.