Skip to main content

No project description provided

Project description

Polars

rust docs Build and test Gitter

Blazingly fast DataFrames in Rust & Python

Polars is a blazingly fast DataFrames library implemented in Rust using Apache Arrow as memory model.

  • Lazy | eager execution
  • Multi-threaded
  • SIMD
  • Query optimization
  • Powerful expression API
  • Rust | Python | ...

To learn more, read the User Guide.

Rust setup

You can take latest release from crates.io, or if you want to use the latest features/ performance improvements point to the master branch of this repo.

You can add the master like this:

polars = {version="0.13.0", git = "https://github.com/ritchie46/polars" }

Or by fixing to a specific version:

polars = {version="0.13.0", git = "https://github.com/ritchie46/polars", rev = "<optional git tag>" } 

Rust version

Required Rust version >=1.51

Python users read this!

Polars is currently transitioning from py-polars to polars. Some docs may still refer the old name.

Install the latest polars version with: $ pip3 install polars

Documentation

Want to know about all the features Polars support? Read the docs!

Rust

Python

Performance

Polars is written to be performant, and it is! But don't take my word for it, take a look at the results in h2oai's db-benchmark.

Cargo Features

Additional cargo features:

  • temporal (default)
    • Conversions between Chrono and Polars for temporal data
  • simd (nightly)
    • SIMD operations
  • parquet
    • Read Apache Parquet format
  • json
    • Json serialization
  • ipc
    • Arrow's IPC format serialization
  • random
    • Generate array's with randomly sampled values
  • ndarray
    • Convert from DataFrame to ndarray
  • lazy
    • Lazy api
  • strings
    • String utilities for Utf8Chunked
  • object
    • Support for generic ChunkedArray's called ObjectChunked<T> (generic over T). These will downcastable from Series through the Any trait.
  • [plain_fmt | pretty_fmt] (mutually exclusive)
    • one of them should be chosen to fmt DataFrames. pretty_fmt can deal with overflowing cells and looks nicer but has more dependencies. plain_fmt (default) is plain formatting.

Contribution

Want to contribute? Read our contribution guideline.

ENV vars

  • POLARS_PAR_SORT_BOUND -> Sets the lower bound of rows at which Polars will use a parallel sorting algorithm. Default is 1M rows.
  • POLARS_FMT_MAX_COLS -> maximum number of columns shown when formatting DataFrames.
  • POLARS_FMT_MAX_ROWS -> maximum number of rows shown when formatting DataFrames.
  • POLARS_TABLE_WIDTH -> width of the tables used during DataFrame formatting.
  • POLARS_MAX_THREADS -> maximum number of threads used in join algorithm. Default is unbounded.
  • POLARS_VERBOSE -> print logging info to stderr

[Python] compile py-polars from source

If you want a bleeding edge release or maximal performance you should compile py-polars from source.

This can be done by going through the following steps in sequence:

  1. install the latest rust compiler
  2. $ pip3 install maturin
  3. Choose any of:
  • Very long compile times, fastest binary: $ cd py-polars && maturin develop --rustc-extra-args="-C target-cpu=native" --release
  • Shorter compile times, fast binary: $ cd py-polars && maturin develop --rustc-extra-args="-C codegen-units=16 lto=no target-cpu=native" --release

Note that the Rust crate implementing the Python bindings is called py-polars to distinguish from the wrapped Rust crate polars itself. However, both the Python package and the Python module are named polars, so you can pip install polars and import polars (previously, these were called py-polars and pypolars).

Acknowledgements

Development of Polars is proudly powered by

Xomnia

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

polars-0.8.0_beta.1-cp36-abi3-win_amd64.whl (10.6 MB view details)

Uploaded CPython 3.6+Windows x86-64

polars-0.8.0_beta.1-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (10.0 MB view details)

Uploaded CPython 3.6+manylinux: glibc 2.12+ x86-64

polars-0.8.0_beta.1-cp36-abi3-macosx_10_7_x86_64.whl (9.8 MB view details)

Uploaded CPython 3.6+macOS 10.7+ x86-64

File details

Details for the file polars-0.8.0_beta.1-cp36-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for polars-0.8.0_beta.1-cp36-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1b3dadf3aa03ab7b28383770440f92238018a744a3c0b2ac0d560a86e9c69a28
MD5 74b22fdf87495f12723f82c6c80d7182
BLAKE2b-256 c4fd9e8560d56aa39622cf06461c0fdb667991e375fc341dd93d10d44bdc7c6e

See more details on using hashes here.

File details

Details for the file polars-0.8.0_beta.1-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for polars-0.8.0_beta.1-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 6b3e275153caa18e4be6464a1a7098102672ea8955cc44417356508cc57187a6
MD5 d31e90a5c218acb35fa09ccf718813f4
BLAKE2b-256 0d09d54cf0f8b66c725ac3f626d21d4d30c368a24faebc037ff8840981e39cfd

See more details on using hashes here.

File details

Details for the file polars-0.8.0_beta.1-cp36-abi3-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for polars-0.8.0_beta.1-cp36-abi3-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 b61ed7f89e93e2c71960069eb479946a1fe240978415bd8ec6c315c214d41705
MD5 4a7f637d11bf88bda57234ce874679df
BLAKE2b-256 ad407f1b9aa5597d560f4ffc3720b74d1a9a3e94ab914de454708caa72a5f66e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page