# Polars 1.6.0 — Python Polars 1.6.0 - Product: Polars (https://whatsnew.fyi/product/polars) - Vendor: Polars - Date: 2024-08-28 - Version: 1.6.0 - Original notes: https://github.com/pola-rs/polars/releases/tag/py-1.6.0 - Permalink: https://whatsnew.fyi/product/polars/releases/1.6.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **changed** — Use Altair in DataFrame.plot - **changed** — Allow mapping as syntactic sugar in str.replace_many - **changed** — Respect input time zone if input is pandas Timestamp - **changed** — Improve Schema and DataType interop with Python types - **added** — Add POLARS_BACKTRACE_IN_ERR for debugging - **added** — IR serde - **changed** — Support pre-signed URLs for cloud scan - **changed** — Support the most recent version of duckdb_engine connections via read_database - **added** — Support empty structs - **changed** — Allow float in interpolate_by by column - **changed** — Make show_versions more responsive - **fixed** — Enable CSE in eager if struct are expanded - **fixed** — Treat explode as gather - **fixed** — Parquet nested values that span several pages - **fixed** — Support reading empty parquet files - **fixed** — Recurse on map field during type conversion - **fixed** — Allow search_sorted on boolean series - **fixed** — Mark Expr.lower_bound and Expr.upper_bound as returning scalar - **fixed** — Fix compressed ndjson row count ##### 💥 Unstable Breaking changes *These API's were marked unstable* and are allowed to change. - Use Altair in DataFrame.plot (#17995) ##### 🚀 Performance improvements - Parquet do not copy uncompressed pages (#18441) - Several large parquet optimizations (#18437) - Batch Plain Parquet UTF-8 verification (#18397) - Partition metadata for parquet statistic loading (#18343) - Fix accidental quadratic parquet metadata (#18327) - Lazy decompress Parquet pages (#18326) - Don't rechunk aligned chunks in owned\_binary\_chunk\_align (#18314) - Batch `DELTA_LENGTH_BYTE_ARRAY` decoding (#18299) - Slice pushdown for SimpleProjection (#18296) - Use direct path for `time`/`timedelta` literals (#18223) - Speedup ndjson reader `~40%` (#18197) - Skip parquet page when unneeded (#18192) ##### ✨ Enhancements - Use Altair in DataFrame.plot (#17995) - Allow mapping as syntactic sugar in `str.replace_many` (#18214) - Respect input time zone if input is pandas Timestamp (#18346) - Improve Schema and DataType interop with Python types (#18308) - Add POLARS\_BACKTRACE\_IN\_ERR for debugging (#18333) - IR serde (#18298) - Improve decimal\_comma error message (#18269) - Support pre-signed URLs for cloud scan (#18274) - Support the most recent version of "duckdb\_engine" connections via `read_database` (#18277) - Support empty structs (#18249) - Allow float in interpolate\_by by column (#18015) - Make show\_versions more responsive (#18208) ##### 🐞 Bug fixes - Enable CSE in eager if struct are expanded (#18426) - Treat `explode` as `gather` (#18431) - Parquet nested values that span several pages (#18407) - Support reading empty parquet files (#18392) - Recurse on map field during type conversion (#15075) - Allow search\_sorted on boolean series (#18387) - Mark Expr.(lower|upper)\_bound as returning scalar (#18383) - Fix compressed ndjson row count (#18371) - Use correct column names when there are no value columns in unpivot (#18340) - Parquet several smaller issues (#18325) - Fix group-by slice on all keys (#18324) - Compute joint null mask before calling rolling corr/cov stats (#18246) - Several `scan_parquet(parallel='prefiltered')` problems (#18278) - Json feature flag missing imports (#18305) - Check groups in group-by filter (#18300) - Parquet delta encoding for 0-bitwidth miniblocks (#18289) - Arguments for `upsample` only have to be sorted within groups (#18264) - Use appropriate bins in `hist` when `bin_count` specified (#16942) - Raise suitable error on unsupported `SQL` set op syntax (#18205) - Fix invalid state due to cached IR (#18262) - Fix failed AWS credential load from '~/.aws/credentials' due to formatting (#18259) - Fix panic streaming parquet scan from cloud with slice (#18202) - Consistently round half-way points down in dt.round (#18245) - Fix duplicate column output and panic for `include_file_paths` (#18255) - Fix unit null rank (#18252) - Use physical for row-encoding (#18251) - Convert date and datetime in literal construction (#16018) - Fix gather str as lit (#18207) ##### 📖 Documentation - Add date\_range and datetime\_ranges examples without `eager=True` (#18379) - Fix incorrect comments in `group_by_dynamic` (#18415) - Alphabetise methods in Python API reference (#18380) - Document POLARS\_BACKTRACE\_IN\_ERR env var (#18354) - Add missing aggregation entries (#18334) (#18341) - Add missing `Series` methods to API reference (#18312) - Document `DataFrame.__getitem__` and `Series.__getitem__` (#18309) - Fix typos and add see also links to struct name expressions (#18282) - Improve decimal\_comma error message (#18269) - Clarify `coalesce` behaviour in `join_asof` (#18273) - Add note to `Expr.shuffle` differentiating from df method (#18266) - Improve formatting and consistency of various docstrings (#18237) - Add missing "Parameters" section to `bin.size` expr docstring (#18222) - Fix column name output in example of `DataFrame.map_ _[Truncated at 4000 characters — full notes: https://github.com/pola-rs/polars/releases/tag/py-1.6.0]_