Name | polars JSON |
Version |
0.20.22
JSON |
| download |
home_page | None |
Summary | Blazingly fast DataFrame library |
upload_time | 2024-04-21 13:49:36 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | None |
keywords |
dataframe
arrow
out-of-core
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
<h1 align="center">
<img src="https://raw.githubusercontent.com/pola-rs/polars-static/master/logos/polars_github_logo_rect_dark_name.svg" alt="Polars logo">
<br>
</h1>
<div align="center">
<a href="https://crates.io/crates/polars">
<img src="https://img.shields.io/crates/v/polars.svg" alt="crates.io Latest Release"/>
</a>
<a href="https://pypi.org/project/polars/">
<img src="https://img.shields.io/pypi/v/polars.svg" alt="PyPi Latest Release"/>
</a>
<a href="https://www.npmjs.com/package/nodejs-polars">
<img src="https://img.shields.io/npm/v/nodejs-polars.svg" alt="NPM Latest Release"/>
</a>
<a href="https://rpolars.r-universe.dev">
<img src="https://rpolars.r-universe.dev/badges/polars" alt="R-universe Latest Release"/>
</a>
<a href="https://doi.org/10.5281/zenodo.7697217">
<img src="https://zenodo.org/badge/DOI/10.5281/zenodo.7697217.svg" alt="DOI Latest Release"/>
</a>
</div>
<p align="center">
<b>Documentation</b>:
<a href="https://docs.pola.rs/py-polars/html/reference/index.html">Python</a>
-
<a href="https://docs.rs/polars/latest/polars/">Rust</a>
-
<a href="https://pola-rs.github.io/nodejs-polars/index.html">Node.js</a>
-
<a href="https://rpolars.github.io/index.html">R</a>
|
<b>StackOverflow</b>:
<a href="https://stackoverflow.com/questions/tagged/python-polars">Python</a>
-
<a href="https://stackoverflow.com/questions/tagged/rust-polars">Rust</a>
-
<a href="https://stackoverflow.com/questions/tagged/nodejs-polars">Node.js</a>
-
<a href="https://stackoverflow.com/questions/tagged/r-polars">R</a>
|
<a href="https://docs.pola.rs/">User guide</a>
|
<a href="https://discord.gg/4UfP5cfBE7">Discord</a>
</p>
## Polars: Blazingly fast DataFrames in Rust, Python, Node.js, R, and SQL
Polars is a DataFrame interface on top of an OLAP Query Engine implemented in Rust using
[Apache Arrow Columnar Format](https://arrow.apache.org/docs/format/Columnar.html) as the memory model.
- Lazy | eager execution
- Multi-threaded
- SIMD
- Query optimization
- Powerful expression API
- Hybrid Streaming (larger-than-RAM datasets)
- Rust | Python | NodeJS | R | ...
To learn more, read the [user guide](https://docs.pola.rs/).
## Python
```python
>>> 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"),
... pl.col("A").sum().over("fruits").alias("sum_A_by_fruits"),
... pl.col("A").reverse().over("fruits").alias("rev_A_by_fruits"),
... pl.col("A").sort_by("B").over("fruits").alias("sort_A_by_B_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 │
└──────────┴──────────┴──────────────┴─────┴─────────────┴─────────────┴─────────────┴─────────────┘
```
## SQL
```python
>>> df = pl.scan_ipc("file.arrow")
>>> # create a SQL context, registering the frame as a table
>>> sql = pl.SQLContext(my_table=df)
>>> # create a SQL query to execute
>>> query = """
... SELECT sum(v1) as sum_v1, min(v2) as min_v2 FROM my_table
... WHERE id1 = 'id016'
... LIMIT 10
... """
>>> ## OPTION 1
>>> # run the query, materializing as a DataFrame
>>> sql.execute(query, eager=True)
shape: (1, 2)
┌────────┬────────┐
│ sum_v1 ┆ min_v2 │
│ --- ┆ --- │
│ i64 ┆ i64 │
╞════════╪════════╡
│ 298268 ┆ 1 │
└────────┴────────┘
>>> ## OPTION 2
>>> # run the query but don't immediately materialize the result.
>>> # this returns a LazyFrame that you can continue to operate on.
>>> lf = sql.execute(query)
>>> (lf.join(other_table)
... .group_by("foo")
... .agg(
... pl.col("sum_v1").count()
... ).collect())
```
SQL commands can also be run directly from your terminal using the Polars CLI:
```bash
# run an inline SQL query
> polars -c "SELECT sum(v1) as sum_v1, min(v2) as min_v2 FROM read_ipc('file.arrow') WHERE id1 = 'id016' LIMIT 10"
# run interactively
> polars
Polars CLI v0.3.0
Type .help for help.
> SELECT sum(v1) as sum_v1, min(v2) as min_v2 FROM read_ipc('file.arrow') WHERE id1 = 'id016' LIMIT 10;
```
Refer to the [Polars CLI repository](https://github.com/pola-rs/polars-cli) for more information.
## Performance 🚀🚀
### Blazingly fast
Polars is very fast. In fact, it is one of the best performing solutions available. See the [TPC-H benchmarks](https://www.pola.rs/benchmarks.html) results.
### Lightweight
Polars is also very lightweight. It comes with zero required dependencies, and this shows in the import times:
- polars: 70ms
- numpy: 104ms
- pandas: 520ms
### Handles larger-than-RAM data
If you have data that does not fit into memory, Polars' query engine is able to process your query (or parts of your query) in a streaming fashion.
This drastically reduces memory requirements, so you might be able to process your 250GB dataset on your laptop.
Collect with `collect(streaming=True)` to run the query streaming.
(This might be a little slower, but it is still very fast!)
## Setup
### Python
Install the latest Polars version with:
```sh
pip install polars
```
We also have a conda package (`conda install -c conda-forge polars`), however pip is the preferred way to install Polars.
Install Polars with all optional dependencies.
```sh
pip install 'polars[all]'
```
You can also install a subset of all optional dependencies.
```sh
pip install 'polars[numpy,pandas,pyarrow]'
```
See the [User Guide](https://docs.pola.rs/user-guide/installation/#feature-flags) for more details on optional dependencies
To see the current Polars version and a full list of its optional dependencies, run:
```python
pl.show_versions()
```
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
You can take latest release from `crates.io`, or if you want to use the latest features / performance
improvements point to the `main` branch of this repo.
```toml
polars = { git = "https://github.com/pola-rs/polars", rev = "<optional git tag>" }
```
Requires Rust version `>=1.71`.
## Contributing
Want to contribute? Read our [contributing guide](https://docs.pola.rs/development/contributing/).
## 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](https://www.rust-lang.org/tools/install)
2. Install [maturin](https://maturin.rs/): `pip install maturin`
3. `cd py-polars` and choose one of the following:
- `make build-release`, fastest binary, very long compile times
- `make build-opt`, fast binary with debug symbols, long compile times
- `make build-debug-opt`, medium-speed binary with debug assertions and symbols, medium compile times
- `make build`, slow binary with debug assertions and symbols, fast compile times
Append `-native` (e.g. `make build-release-native`) to enable further optimizations specific to
your CPU. This produces a non-portable binary/wheel however.
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`.
## Using custom Rust functions in Python
Extending Polars with UDFs compiled in Rust is easy. We expose PyO3 extensions for `DataFrame` and `Series`
data structures. See more in https://github.com/pola-rs/pyo3-polars.
## 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 polars-u64-idx`.
Don't use this unless you hit the row boundary as the default build of Polars is faster and consumes less memory.
## Legacy
Do you want Polars to run on an old CPU (e.g. dating from before 2011), or on an `x86-64` build
of Python on Apple Silicon under Rosetta? Install `pip install polars-lts-cpu`. This version of
Polars is compiled without [AVX](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions) target
features.
## Sponsors
[<img src="https://www.jetbrains.com/company/brand/img/jetbrains_logo.png" height="50" alt="JetBrains logo" />](https://www.jetbrains.com)
Raw data
{
"_id": null,
"home_page": null,
"name": "polars",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "dataframe, arrow, out-of-core",
"author": null,
"author_email": "Ritchie Vink <ritchie46@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/c6/8e/deff4e0d6a9d437883570f4479e7236b854d07b5a99c3eb0d7845acdf1f4/polars-0.20.22.tar.gz",
"platform": null,
"description": "<h1 align=\"center\">\n <img src=\"https://raw.githubusercontent.com/pola-rs/polars-static/master/logos/polars_github_logo_rect_dark_name.svg\" alt=\"Polars logo\">\n <br>\n</h1>\n\n<div align=\"center\">\n <a href=\"https://crates.io/crates/polars\">\n <img src=\"https://img.shields.io/crates/v/polars.svg\" alt=\"crates.io Latest Release\"/>\n </a>\n <a href=\"https://pypi.org/project/polars/\">\n <img src=\"https://img.shields.io/pypi/v/polars.svg\" alt=\"PyPi Latest Release\"/>\n </a>\n <a href=\"https://www.npmjs.com/package/nodejs-polars\">\n <img src=\"https://img.shields.io/npm/v/nodejs-polars.svg\" alt=\"NPM Latest Release\"/>\n </a>\n <a href=\"https://rpolars.r-universe.dev\">\n <img src=\"https://rpolars.r-universe.dev/badges/polars\" alt=\"R-universe Latest Release\"/>\n </a>\n <a href=\"https://doi.org/10.5281/zenodo.7697217\">\n <img src=\"https://zenodo.org/badge/DOI/10.5281/zenodo.7697217.svg\" alt=\"DOI Latest Release\"/>\n </a>\n</div>\n\n<p align=\"center\">\n <b>Documentation</b>:\n <a href=\"https://docs.pola.rs/py-polars/html/reference/index.html\">Python</a>\n -\n <a href=\"https://docs.rs/polars/latest/polars/\">Rust</a>\n -\n <a href=\"https://pola-rs.github.io/nodejs-polars/index.html\">Node.js</a>\n -\n <a href=\"https://rpolars.github.io/index.html\">R</a>\n |\n <b>StackOverflow</b>:\n <a href=\"https://stackoverflow.com/questions/tagged/python-polars\">Python</a>\n -\n <a href=\"https://stackoverflow.com/questions/tagged/rust-polars\">Rust</a>\n -\n <a href=\"https://stackoverflow.com/questions/tagged/nodejs-polars\">Node.js</a>\n -\n <a href=\"https://stackoverflow.com/questions/tagged/r-polars\">R</a>\n |\n <a href=\"https://docs.pola.rs/\">User guide</a>\n |\n <a href=\"https://discord.gg/4UfP5cfBE7\">Discord</a>\n</p>\n\n## Polars: Blazingly fast DataFrames in Rust, Python, Node.js, R, and SQL\n\nPolars is a DataFrame interface on top of an OLAP Query Engine implemented in Rust using\n[Apache Arrow Columnar Format](https://arrow.apache.org/docs/format/Columnar.html) as the memory model.\n\n- Lazy | eager execution\n- Multi-threaded\n- SIMD\n- Query optimization\n- Powerful expression API\n- Hybrid Streaming (larger-than-RAM datasets)\n- Rust | Python | NodeJS | R | ...\n\nTo learn more, read the [user guide](https://docs.pola.rs/).\n\n## Python\n\n```python\n>>> import polars as pl\n>>> df = pl.DataFrame(\n... {\n... \"A\": [1, 2, 3, 4, 5],\n... \"fruits\": [\"banana\", \"banana\", \"apple\", \"apple\", \"banana\"],\n... \"B\": [5, 4, 3, 2, 1],\n... \"cars\": [\"beetle\", \"audi\", \"beetle\", \"beetle\", \"beetle\"],\n... }\n... )\n\n# embarrassingly parallel execution & very expressive query language\n>>> df.sort(\"fruits\").select(\n... \"fruits\",\n... \"cars\",\n... pl.lit(\"fruits\").alias(\"literal_string_fruits\"),\n... pl.col(\"B\").filter(pl.col(\"cars\") == \"beetle\").sum(),\n... pl.col(\"A\").filter(pl.col(\"B\") > 2).sum().over(\"cars\").alias(\"sum_A_by_cars\"),\n... pl.col(\"A\").sum().over(\"fruits\").alias(\"sum_A_by_fruits\"),\n... pl.col(\"A\").reverse().over(\"fruits\").alias(\"rev_A_by_fruits\"),\n... pl.col(\"A\").sort_by(\"B\").over(\"fruits\").alias(\"sort_A_by_B_by_fruits\"),\n... )\nshape: (5, 8)\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 fruits \u2506 cars \u2506 literal_stri \u2506 B \u2506 sum_A_by_ca \u2506 sum_A_by_fr \u2506 rev_A_by_fr \u2506 sort_A_by_B \u2502\n\u2502 --- \u2506 --- \u2506 ng_fruits \u2506 --- \u2506 rs \u2506 uits \u2506 uits \u2506 _by_fruits \u2502\n\u2502 str \u2506 str \u2506 --- \u2506 i64 \u2506 --- \u2506 --- \u2506 --- \u2506 --- \u2502\n\u2502 \u2506 \u2506 str \u2506 \u2506 i64 \u2506 i64 \u2506 i64 \u2506 i64 \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 \"apple\" \u2506 \"beetle\" \u2506 \"fruits\" \u2506 11 \u2506 4 \u2506 7 \u2506 4 \u2506 4 \u2502\n\u2502 \"apple\" \u2506 \"beetle\" \u2506 \"fruits\" \u2506 11 \u2506 4 \u2506 7 \u2506 3 \u2506 3 \u2502\n\u2502 \"banana\" \u2506 \"beetle\" \u2506 \"fruits\" \u2506 11 \u2506 4 \u2506 8 \u2506 5 \u2506 5 \u2502\n\u2502 \"banana\" \u2506 \"audi\" \u2506 \"fruits\" \u2506 11 \u2506 2 \u2506 8 \u2506 2 \u2506 2 \u2502\n\u2502 \"banana\" \u2506 \"beetle\" \u2506 \"fruits\" \u2506 11 \u2506 4 \u2506 8 \u2506 1 \u2506 1 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n## SQL\n\n```python\n>>> df = pl.scan_ipc(\"file.arrow\")\n>>> # create a SQL context, registering the frame as a table\n>>> sql = pl.SQLContext(my_table=df)\n>>> # create a SQL query to execute\n>>> query = \"\"\"\n... SELECT sum(v1) as sum_v1, min(v2) as min_v2 FROM my_table\n... WHERE id1 = 'id016'\n... LIMIT 10\n... \"\"\"\n>>> ## OPTION 1\n>>> # run the query, materializing as a DataFrame\n>>> sql.execute(query, eager=True)\n shape: (1, 2)\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 sum_v1 \u2506 min_v2 \u2502\n \u2502 --- \u2506 --- \u2502\n \u2502 i64 \u2506 i64 \u2502\n \u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n \u2502 298268 \u2506 1 \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n>>> ## OPTION 2\n>>> # run the query but don't immediately materialize the result.\n>>> # this returns a LazyFrame that you can continue to operate on.\n>>> lf = sql.execute(query)\n>>> (lf.join(other_table)\n... .group_by(\"foo\")\n... .agg(\n... pl.col(\"sum_v1\").count()\n... ).collect())\n```\n\nSQL commands can also be run directly from your terminal using the Polars CLI:\n\n```bash\n# run an inline SQL query\n> polars -c \"SELECT sum(v1) as sum_v1, min(v2) as min_v2 FROM read_ipc('file.arrow') WHERE id1 = 'id016' LIMIT 10\"\n\n# run interactively\n> polars\nPolars CLI v0.3.0\nType .help for help.\n\n> SELECT sum(v1) as sum_v1, min(v2) as min_v2 FROM read_ipc('file.arrow') WHERE id1 = 'id016' LIMIT 10;\n```\n\nRefer to the [Polars CLI repository](https://github.com/pola-rs/polars-cli) for more information.\n\n## Performance \ud83d\ude80\ud83d\ude80\n\n### Blazingly fast\n\nPolars is very fast. In fact, it is one of the best performing solutions available. See the [TPC-H benchmarks](https://www.pola.rs/benchmarks.html) results.\n\n### Lightweight\n\nPolars is also very lightweight. It comes with zero required dependencies, and this shows in the import times:\n\n- polars: 70ms\n- numpy: 104ms\n- pandas: 520ms\n\n### Handles larger-than-RAM data\n\nIf you have data that does not fit into memory, Polars' query engine is able to process your query (or parts of your query) in a streaming fashion.\nThis drastically reduces memory requirements, so you might be able to process your 250GB dataset on your laptop.\nCollect with `collect(streaming=True)` to run the query streaming.\n(This might be a little slower, but it is still very fast!)\n\n## Setup\n\n### Python\n\nInstall the latest Polars version with:\n\n```sh\npip install polars\n```\n\nWe also have a conda package (`conda install -c conda-forge polars`), however pip is the preferred way to install Polars.\n\nInstall Polars with all optional dependencies.\n\n```sh\npip install 'polars[all]'\n```\n\nYou can also install a subset of all optional dependencies.\n\n```sh\npip install 'polars[numpy,pandas,pyarrow]'\n```\n\nSee the [User Guide](https://docs.pola.rs/user-guide/installation/#feature-flags) for more details on optional dependencies\n\nTo see the current Polars version and a full list of its optional dependencies, run:\n\n```python\npl.show_versions()\n```\n\nReleases 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.\n\n### Rust\n\nYou can take latest release from `crates.io`, or if you want to use the latest features / performance\nimprovements point to the `main` branch of this repo.\n\n```toml\npolars = { git = \"https://github.com/pola-rs/polars\", rev = \"<optional git tag>\" }\n```\n\nRequires Rust version `>=1.71`.\n\n## Contributing\n\nWant to contribute? Read our [contributing guide](https://docs.pola.rs/development/contributing/).\n\n## Python: compile Polars from source\n\nIf you want a bleeding edge release or maximal performance you should compile Polars from source.\n\nThis can be done by going through the following steps in sequence:\n\n1. Install the latest [Rust compiler](https://www.rust-lang.org/tools/install)\n2. Install [maturin](https://maturin.rs/): `pip install maturin`\n3. `cd py-polars` and choose one of the following:\n - `make build-release`, fastest binary, very long compile times\n - `make build-opt`, fast binary with debug symbols, long compile times\n - `make build-debug-opt`, medium-speed binary with debug assertions and symbols, medium compile times\n - `make build`, slow binary with debug assertions and symbols, fast compile times\n\n Append `-native` (e.g. `make build-release-native`) to enable further optimizations specific to\n your CPU. This produces a non-portable binary/wheel however.\n\nNote that the Rust crate implementing the Python bindings is called `py-polars` to distinguish from the wrapped\nRust crate `polars` itself. However, both the Python package and the Python module are named `polars`, so you\ncan `pip install polars` and `import polars`.\n\n## Using custom Rust functions in Python\n\nExtending Polars with UDFs compiled in Rust is easy. We expose PyO3 extensions for `DataFrame` and `Series`\ndata structures. See more in https://github.com/pola-rs/pyo3-polars.\n\n## Going big...\n\nDo you expect more than 2^32 (~4.2 billion) rows? Compile Polars with the `bigidx` feature\nflag or, for Python users, install `pip install polars-u64-idx`.\n\nDon't use this unless you hit the row boundary as the default build of Polars is faster and consumes less memory.\n\n## Legacy\n\nDo you want Polars to run on an old CPU (e.g. dating from before 2011), or on an `x86-64` build\nof Python on Apple Silicon under Rosetta? Install `pip install polars-lts-cpu`. This version of\nPolars is compiled without [AVX](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions) target\nfeatures.\n\n## Sponsors\n\n[<img src=\"https://www.jetbrains.com/company/brand/img/jetbrains_logo.png\" height=\"50\" alt=\"JetBrains logo\" />](https://www.jetbrains.com)\n\n",
"bugtrack_url": null,
"license": null,
"summary": "Blazingly fast DataFrame library",
"version": "0.20.22",
"project_urls": {
"Changelog": "https://github.com/pola-rs/polars/releases",
"Documentation": "https://docs.pola.rs/py-polars/html/reference/index.html",
"Homepage": "https://www.pola.rs/",
"Repository": "https://github.com/pola-rs/polars"
},
"split_keywords": [
"dataframe",
" arrow",
" out-of-core"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2e79ed6af5f6f9af9e0d333f84383d6ab6c772e5f2fd83e8f5a6d751da5b596c",
"md5": "04e5b5a7169338fd0f864493433311ec",
"sha256": "d211aed6ae34845e1a9766e3b487f73ee9d5044927cc748f7498a72a5a0c8805"
},
"downloads": -1,
"filename": "polars-0.20.22-cp38-abi3-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "04e5b5a7169338fd0f864493433311ec",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 26334007,
"upload_time": "2024-04-21T13:48:33",
"upload_time_iso_8601": "2024-04-21T13:48:33.920667Z",
"url": "https://files.pythonhosted.org/packages/2e/79/ed6af5f6f9af9e0d333f84383d6ab6c772e5f2fd83e8f5a6d751da5b596c/polars-0.20.22-cp38-abi3-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ef0a0fab9725aad9c7759a807eabb1022ef4e39abddaa77b1071e604b98b8e0a",
"md5": "2af9fd66a6d160a3ea2a51143f1869a3",
"sha256": "15d8807828f9c3ddbab60b4aa17ea1dea7743a3dddebfd1c6186826257a687ca"
},
"downloads": -1,
"filename": "polars-0.20.22-cp38-abi3-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "2af9fd66a6d160a3ea2a51143f1869a3",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 23581766,
"upload_time": "2024-04-21T13:48:41",
"upload_time_iso_8601": "2024-04-21T13:48:41.096873Z",
"url": "https://files.pythonhosted.org/packages/ef/0a/0fab9725aad9c7759a807eabb1022ef4e39abddaa77b1071e604b98b8e0a/polars-0.20.22-cp38-abi3-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e9f9198d38e3c4b4ca1d4eebd285a90ed706dae7129ecddb6643f134bec6a231",
"md5": "8903af13f8fd88d48101d04681728e1f",
"sha256": "2f7b08e1725d1a7c522aa316304e8ddb835c69b579577249764c7fa4eeb97305"
},
"downloads": -1,
"filename": "polars-0.20.22-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "8903af13f8fd88d48101d04681728e1f",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 27380607,
"upload_time": "2024-04-21T13:48:46",
"upload_time_iso_8601": "2024-04-21T13:48:46.216254Z",
"url": "https://files.pythonhosted.org/packages/e9/f9/198d38e3c4b4ca1d4eebd285a90ed706dae7129ecddb6643f134bec6a231/polars-0.20.22-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4ad170557caf7e079d596e7c11acb155039a2e917d1d40a3baaaf2584746096f",
"md5": "17482f0f75c8d8d93e847e28bf40dfa9",
"sha256": "08ee57946f34e2de3ebfc7853d21a14eb92e3993e71d788a6aaaa0757e7bd3e2"
},
"downloads": -1,
"filename": "polars-0.20.22-cp38-abi3-manylinux_2_24_aarch64.whl",
"has_sig": false,
"md5_digest": "17482f0f75c8d8d93e847e28bf40dfa9",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 25572840,
"upload_time": "2024-04-21T13:48:50",
"upload_time_iso_8601": "2024-04-21T13:48:50.235362Z",
"url": "https://files.pythonhosted.org/packages/4a/d1/70557caf7e079d596e7c11acb155039a2e917d1d40a3baaaf2584746096f/polars-0.20.22-cp38-abi3-manylinux_2_24_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f86f0448f48e3568ac02198848f4fa71839e9ca09919f8f0425392c866f85915",
"md5": "771c3f21050e631e947d78e1c96b8d49",
"sha256": "abc5da1f6f7e2ee15bdab74cd19939948a0910799b27ee3eb0768bb95f0e9aff"
},
"downloads": -1,
"filename": "polars-0.20.22-cp38-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "771c3f21050e631e947d78e1c96b8d49",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 27244666,
"upload_time": "2024-04-21T13:48:55",
"upload_time_iso_8601": "2024-04-21T13:48:55.633154Z",
"url": "https://files.pythonhosted.org/packages/f8/6f/0448f48e3568ac02198848f4fa71839e9ca09919f8f0425392c866f85915/polars-0.20.22-cp38-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c68edeff4e0d6a9d437883570f4479e7236b854d07b5a99c3eb0d7845acdf1f4",
"md5": "6d2004869d4f9510704ae9647a125340",
"sha256": "ceeb767bb944605539db63c528fe074708f0e23ece2f78f3dfc5132ac2e84d64"
},
"downloads": -1,
"filename": "polars-0.20.22.tar.gz",
"has_sig": false,
"md5_digest": "6d2004869d4f9510704ae9647a125340",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 3436784,
"upload_time": "2024-04-21T13:49:36",
"upload_time_iso_8601": "2024-04-21T13:49:36.765561Z",
"url": "https://files.pythonhosted.org/packages/c6/8e/deff4e0d6a9d437883570f4479e7236b854d07b5a99c3eb0d7845acdf1f4/polars-0.20.22.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-21 13:49:36",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pola-rs",
"github_project": "polars",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "polars"
}