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

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

To learn more, read the User Guide.

>>> 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",
    lit("fruits").alias("literal_string_fruits"),
    col("B").filter(col("cars") == "beetle").sum(),
    col("A").filter(col("B") > 2).sum().over("cars").alias("sum_A_by_cars"),       # groups by "cars"
    col("A").sum().over("fruits").alias("sum_A_by_fruits"),                        # groups by "fruits"
    col("A").reverse().over("fruits").flatten().alias("rev_A_by_fruits"),          # groups by "fruits
    col("A").sort_by("B").over("fruits").flatten().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.

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.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

Documentation

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

Rust

Python

Contribution

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).

Arrow2

Polars has transitioned to arrow2. 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. There is still a maintained arrow-rs branch for users who want to use another backend.

Acknowledgements

Development of Polars is proudly powered by

Xomnia

Sponsors

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 Distribution

polars-0.10.17.tar.gz (553.3 kB view details)

Uploaded Source

Built Distributions

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

polars-0.10.17-cp36-abi3-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.6+Windows x86-64

polars-0.10.17-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (9.9 MB view details)

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

polars-0.10.17-cp36-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (17.8 MB view details)

Uploaded CPython 3.6+macOS 10.9+ universal2 (ARM64, x86-64)macOS 10.9+ x86-64macOS 11.0+ ARM64

polars-0.10.17-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.10.17.tar.gz.

File metadata

  • Download URL: polars-0.10.17.tar.gz
  • Upload date:
  • Size: 553.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.12.0-beta.2

File hashes

Hashes for polars-0.10.17.tar.gz
Algorithm Hash digest
SHA256 fe82b72c040e9e9e43306d5a38e60e54277fb6bc58365b0429b2dd3cf3ce2041
MD5 456313374987f194b94f785db1738f59
BLAKE2b-256 7cfa5bbe5e6ee5fad2541435ac665bc120eb55c200d714aa88b1136437e7a7ae

See more details on using hashes here.

File details

Details for the file polars-0.10.17-cp36-abi3-win_amd64.whl.

File metadata

  • Download URL: polars-0.10.17-cp36-abi3-win_amd64.whl
  • Upload date:
  • Size: 10.3 MB
  • Tags: CPython 3.6+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.11.0

File hashes

Hashes for polars-0.10.17-cp36-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d256464a4271464322cbbc99d7a46529b087b7d2556a37140ee5657b738eb2f8
MD5 e4286ddd7cd691f2ddf88e67c381cd99
BLAKE2b-256 426612290b13c9bdb850b623d096dd7879e490bcf944af3eedc5a394754fb383

See more details on using hashes here.

File details

Details for the file polars-0.10.17-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for polars-0.10.17-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 c5c956f49075ffecda28d71381f119abf1600a171b845289d850e3213900859b
MD5 edc4edcf3a720e74c87778174d92cac6
BLAKE2b-256 5c953755c14ccc355ccc085c5ba7c0bf9ccc4642337e28d92ec9b5064d8989a6

See more details on using hashes here.

File details

Details for the file polars-0.10.17-cp36-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for polars-0.10.17-cp36-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 3815c85c516823c5eedad157e0185bfa6a98a76e18e1ef67ea897f8b0eb35435
MD5 de14d7c1ce4b85c3cb8f97b88d9265ab
BLAKE2b-256 ca91ccc13d719def3eda67b35658344b1c12541b557e62c633e0d8bd261c05ff

See more details on using hashes here.

File details

Details for the file polars-0.10.17-cp36-abi3-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for polars-0.10.17-cp36-abi3-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 9b028587bd28e0910604cf9402cb535ff463a66ae13a2738b262335061ac18b3
MD5 8b4d84d6336e41be7461d89a374c8217
BLAKE2b-256 2bf4f465ecd47b3d288178c121808eb808beec6e64c8333fcef96207df738ff3

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