Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 2.1.0 instead.
Reason given by maintainers: regression

Polars

rust docs Build and test PyPI Latest Release NPM Latest Release

Python Documentation | Rust Documentation | User Guide | Discord | StackOverflow

Blazingly fast DataFrames in Rust, Python & Node.js

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

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

To learn more, read the User Guide.

>>> import polars as pl
>>> df = pl.DataFrame(
...     {
...         "A": [1, 2, 3, 4, 5],
...         "fruits": ["banana", "banana", "apple", "apple", "banana"],
...         "B": [5, 4, 3, 2, 1],
...         "cars": ["beetle", "audi", "beetle", "beetle", "beetle"],
...     }
... )

# embarrassingly parallel execution
# very expressive query language
>>> (
...     df
...     .sort("fruits")
...     .select(
...         [
...             "fruits",
...             "cars",
...             pl.lit("fruits").alias("literal_string_fruits"),
...             pl.col("B").filter(pl.col("cars") == "beetle").sum(),
...             pl.col("A").filter(pl.col("B") > 2).sum().over("cars").alias("sum_A_by_cars"),     # groups by "cars"
...             pl.col("A").sum().over("fruits").alias("sum_A_by_fruits"),                         # groups by "fruits"
...             pl.col("A").reverse().over("fruits").alias("rev_A_by_fruits"),                     # groups by "fruits
...             pl.col("A").sort_by("B").over("fruits").alias("sort_A_by_B_by_fruits"),            # groups by "fruits"
...         ]
...     )
... )
shape: (5, 8)
┌──────────┬──────────┬──────────────┬─────┬─────────────┬─────────────┬─────────────┬─────────────┐
│ fruits   ┆ cars     ┆ literal_stri ┆ B   ┆ sum_A_by_ca ┆ sum_A_by_fr ┆ rev_A_by_fr ┆ sort_A_by_B │
│ ---      ┆ ---      ┆ ng_fruits    ┆ --- ┆ rs          ┆ uits        ┆ uits        ┆ _by_fruits  │
│ str      ┆ str      ┆ ---          ┆ i64 ┆ ---         ┆ ---         ┆ ---         ┆ ---         │
│          ┆          ┆ str          ┆     ┆ i64         ┆ i64         ┆ i64         ┆ i64         │
╞══════════╪══════════╪══════════════╪═════╪═════════════╪═════════════╪═════════════╪═════════════╡
│ "apple"  ┆ "beetle" ┆ "fruits"     ┆ 11  ┆ 4           ┆ 7           ┆ 4           ┆ 4           │
├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ "apple"  ┆ "beetle" ┆ "fruits"     ┆ 11  ┆ 4           ┆ 7           ┆ 3           ┆ 3           │
├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ "banana" ┆ "beetle" ┆ "fruits"     ┆ 11  ┆ 4           ┆ 8           ┆ 5           ┆ 5           │
├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ "banana" ┆ "audi"   ┆ "fruits"     ┆ 11  ┆ 2           ┆ 8           ┆ 2           ┆ 2           │
├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ "banana" ┆ "beetle" ┆ "fruits"     ┆ 11  ┆ 4           ┆ 8           ┆ 1           ┆ 1           │
└──────────┴──────────┴──────────────┴─────┴─────────────┴─────────────┴─────────────┴─────────────┘

Performance 🚀🚀

Polars is very fast, and in fact is one of the best performing solutions available. See the results in h2oai's db-benchmark.

Python setup

Install the latest polars version with:

$ pip3 install -U polars[pyarrow]

Releases happen quite often (weekly / every few days) at the moment, so updating polars regularly to get the latest bugfixes / features might not be a bad idea.

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.

polars = { git = "https://github.com/pola-rs/polars", rev = "<optional git tag>" }

Rust version

Required Rust version >=1.58

Documentation

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

Python

Rust

Node

Contribution

Want to contribute? Read our contribution guideline.

[Python]: compile polars from source

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

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

  1. Install the latest Rust compiler
  2. Install maturin: $ pip3 install maturin
  3. Choose any of:
    • Fastest binary, very long compile times:
      $ cd py-polars && maturin develop --rustc-extra-args="-C target-cpu=native" --release
      
    • Fast binary, Shorter compile times:
      $ cd py-polars && maturin develop --rustc-extra-args="-C codegen-units=16 -C lto=thin -C 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.

Arrow2

Polars has transitioned to arrow2. Arrow2 is a faster and safer implementation of the Apache Arrow Columnar Format. Arrow2 also has a more granular code base, helping to reduce the compiler bloat.

Use custom Rust function in python?

See this example.

Going big...

Do you expect more than 2^32 ~4,2 billion rows? Compile polars with the bigidx feature flag.

Or for python users install $ pip install -U polars-u64-idx.

Don't use this unless you hit the row boundary as the default polars is faster and consumes less memory.

Acknowledgements

Development of Polars is proudly powered by

Xomnia

Sponsors

 

Metadata

Release files for polars 0.13.47

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for polars 0.13.47
File Size Uploaded Provenance Actions
polars-0.13.47.tar.gz 903.2 kB Without provenance Details for polars-0.13.47.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for polars 0.13.47
File Actions
polars-0.13.47-cp37-abi3-win_amd64.whl CPython 3.7 abi3 Windows x86-64 Details for polars-0.13.47-cp37-abi3-win_amd64.whl
polars-0.13.47-cp37-abi3-manylinux_2_24_aarch64.whl CPython 3.7 abi3 Linux glibc 2.24+ ARM64 Details for polars-0.13.47-cp37-abi3-manylinux_2_24_aarch64.whl
polars-0.13.47-cp37-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl CPython 3.7 abi3 Linux glibc 2.12+ x86-64 Details for polars-0.13.47-cp37-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
polars-0.13.47-cp37-abi3-macosx_11_0_arm64.whl CPython 3.7 abi3 macOS 11.0+ ARM64 Details for polars-0.13.47-cp37-abi3-macosx_11_0_arm64.whl
polars-0.13.47-cp37-abi3-macosx_10_7_x86_64.whl CPython 3.7 abi3 macOS 10.7+ x86-64 Details for polars-0.13.47-cp37-abi3-macosx_10_7_x86_64.whl

Total release size: 58.4 MB

Release files / polars-0.13.47.tar.gz

Download URL polars-0.13.47.tar.gz
Size 903.2 kB
Tags Source
SHA-256 checksum
How to use checksums
06046390f647616358b9ab942b64d7861141adf626dcd6ad7e25368862f33b91
BLAKE2b-256 checksum
How to use checksums
6690b9ccf8f95de29b22f183561b897f2414f34c85c619c57978771a44bb576b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.12.11-beta.1

Release files / polars-0.13.47-cp37-abi3-win_amd64.whl

Download URL polars-0.13.47-cp37-abi3-win_amd64.whl
Size 13.0 MB
Tags CPython 3.7 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
111e53f3fe1388dfa2cf986412a2f36fe9162e11e3899af35762fa81b0402c86
BLAKE2b-256 checksum
How to use checksums
9d10be8948b5654009addcb197126b1e8e046b5d76043f883da093032a2dcd01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.12.1

Release files / polars-0.13.47-cp37-abi3-manylinux_2_24_aarch64.whl

Download URL polars-0.13.47-cp37-abi3-manylinux_2_24_aarch64.whl
Size 10.6 MB
Tags CPython 3.7 Linux glibc 2.24+ ARM64 abi3
SHA-256 checksum
How to use checksums
e5b63314babc60c9614e7f1c9d735116cf3548482571b91551b60b214d11c1fa
BLAKE2b-256 checksum
How to use checksums
6c6c6343dd16e07c157253da273687840d359a58b5f37fa55ff2e37802f4fec1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.12.1

Release files / polars-0.13.47-cp37-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl

Download URL polars-0.13.47-cp37-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Size 12.2 MB
Tags CPython 3.7 Linux glibc 2.12+ x86-64 abi3
SHA-256 checksum
How to use checksums
8d29f925d832c6ec830b86e4ae4408292ed4a9638a320648622cc36fa1c05cfe
BLAKE2b-256 checksum
How to use checksums
1a60be57c0d462a757d2e7aa85f5fa7ecdf41ed660ee6e788d825f5dd939a3b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.12.11-beta.1

Release files / polars-0.13.47-cp37-abi3-macosx_11_0_arm64.whl

Download URL polars-0.13.47-cp37-abi3-macosx_11_0_arm64.whl
Size 9.9 MB
Tags CPython 3.7 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
571bbe50f77dcc8af8af6bb12994f6f59dae1d2c72d4f7feedc0c0b24ad1d0d6
BLAKE2b-256 checksum
How to use checksums
f09daa8380e3aee1f4b4464513f75f8e54288ce6e7b897c1e1b74533d6b0bba9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.12.1

Release files / polars-0.13.47-cp37-abi3-macosx_10_7_x86_64.whl

Download URL polars-0.13.47-cp37-abi3-macosx_10_7_x86_64.whl
Size 11.7 MB
Tags CPython 3.7 abi3 macOS 10.7+ x86-64
SHA-256 checksum
How to use checksums
8ab6aee6fc69b40ec9c52de9d02fb827f60095d74b64929984ee7a6d489fd1ac
BLAKE2b-256 checksum
How to use checksums
37f8682f214f34616a6ccd1dbf55564a6ea079a8875ce9f9787fc405b1dcb4f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/0.12.1

Security for polars 0.13.47

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.

Release history Release notifications | RSS feed

This release

0.13.47 This release

6 release files No provenance

0.13.30

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page