18 releases (4 breaking)

new 0.16.0 Sep 14, 2021
0.15.1 Aug 9, 2021
0.14.8 Jul 23, 2021
0.14.4 Jun 26, 2021
0.12.0 Jan 27, 2021
Download history 59/week @ 2021-05-26 132/week @ 2021-06-02 91/week @ 2021-06-09 123/week @ 2021-06-16 172/week @ 2021-06-23 297/week @ 2021-06-30 679/week @ 2021-07-07 1938/week @ 2021-07-14 1383/week @ 2021-07-21 1245/week @ 2021-07-28 1447/week @ 2021-08-04 1112/week @ 2021-08-11 1206/week @ 2021-08-18 1700/week @ 2021-08-25 994/week @ 2021-09-01 886/week @ 2021-09-08

4,390 downloads per month
Used in 5 crates (via polars)

MIT license

48K SLoC


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(2) as memory model.

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

To learn more, read the User Guide.


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

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/ritchie46/polars", rev = "<optional git tag>" } 

Rust version

Required Rust version >=1.52

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


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




Want to contribute? Read our contribution guideline.

[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 -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 (previously, these were called py-polars and pypolars).


Polars has a fully functional arrow2 branch and will ship the python binaries from this branch. Arrow2 is a faster and safer implementation of the arrow spec. Arrow2 also has a more granular code base, helping to reduce the compiler bloat.


Development of Polars is proudly powered by



~185K SLoC