<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/polars-in-aggregate-new-string-type-plotting-sql-and-more-qk4oz4jjd" -->

---
title: Polars in Aggregate: New string type, plotting, SQL and more
description: A roundup of recent Polars releases (Python 0.20.3-0.20.6, Rust 0.36.2-0.37.0) covering major changes: a complete rewrite of the string/binary type that...
canonical: https://daily.dev/posts/polars-in-aggregate-new-string-type-plotting-sql-and-more-qk4oz4jjd
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Polars in Aggregate: New string type, plotting, SQL and more | daily.dev
og:description: A roundup of recent Polars releases (Python 0.20.3-0.20.6, Rust 0.36.2-0.37.0) covering major changes: a complete rewrite of the string/binary type that...
og:url: https://daily.dev/posts/polars-in-aggregate-new-string-type-plotting-sql-and-more-qk4oz4jjd
og:image: https://api.daily.dev/og/posts/qK4Oz4jjD.png
og:image:alt: Polars in Aggregate: New string type, plotting, SQL and more
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Polars in Aggregate: New string type, plotting, SQL and more

**[Polars Blog](https://daily.dev/sources/polars)** · 6 min read · 0 upvotes · 0 comments

## Summary

A roundup of recent Polars releases (Python 0.20.3-0.20.6, Rust 0.36.2-0.37.0) covering major changes: a complete rewrite of the string/binary type that improves filter performance from O(n·k) to O(n); new plotting support via hvPlot with Bokeh, Plotly, and Matplotlib backends installable through a plot feature flag; expanded SQL front-end support including EXTRACT, REGEXP, LIKE, IF, subqueries, and more; a native Python DataFrame interchange protocol implementation that removes the PyArrow dependency (landed in 0.20.4); new Array expressions like join, count_matches, explode, and contains; and an experimental Excel reader using the calamine engine via fastexcel for faster, zero-copy reads.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://pola.rs/posts/polars-in-aggregate-feb24>

## Questions this post answers

### How did Polars improve string filtering performance in its string type rewrite?

Polars rewrote its string/binary type so that filter operation time complexity dropped from O(n·k) to O(n), making filtering independent of string length. This fixed pathological performance cases, and the change is expected to improve many other string-related operations as well, delivered across the 0.20.x Python release series.

_Track library changelogs like this one on daily.dev before a dependency upgrade surprises your data pipeline._

### How can I create plots directly from a Polars DataFrame?

Polars added native plotting support through integration with the hvPlot library, installable via the feature flag command pip install "polars[plot]". It supports multiple backends including interactive Bokeh or Plotly plots and static Matplotlib plots, with methods like df.plot.line() and df.plot.scatter() available directly on DataFrames.

_Developers evaluating dataframe tooling can follow feature rollouts like this on daily.dev._

### Does Polars support a native Python DataFrame interchange protocol without requiring PyArrow?

Yes, Polars shipped a native implementation of the DataFrame interchange protocol starting in version 0.20.4, removing the prior dependency on PyArrow. This lets third-party libraries like scikit-learn or plotting tools convert Polars DataFrames to and from other DataFrame libraries without extra dependencies or copying data.

_daily.dev helps engineers keep up with dependency changes like this before they hit a build._

## Similar posts on daily.dev

- [Release of Polars 2.0](https://daily.dev/posts/release-of-polars-2-0-84cwf427y) · Polars Blog · 2 upvotes · 0 comments
- [How to Use the Polars Library in Python for Data Analysis](https://daily.dev/posts/how-to-use-the-polars-library-in-python-for-data-analysis-stzxazhnq) · freeCodeCamp · 3 upvotes · 0 comments

---

Tags: [#python](https://daily.dev/tags/python), [#rust](https://daily.dev/tags/rust), [#sql](https://daily.dev/tags/sql), [#polars](https://daily.dev/tags/polars)

[View this post on daily.dev](https://daily.dev/posts/polars-in-aggregate-new-string-type-plotting-sql-and-more-qk4oz4jjd)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Polars in Aggregate: New string type, plotting, SQL and more","url":"https://daily.dev/posts/polars-in-aggregate-new-string-type-plotting-sql-and-more-qk4oz4jjd","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/polars-in-aggregate-new-string-type-plotting-sql-and-more-qk4oz4jjd"},"datePublished":"2026-08-16T08:53:13.200Z","dateModified":"2026-08-16T08:53:38.717Z","description":"A roundup of recent Polars releases (Python 0.20.3-0.20.6, Rust 0.36.2-0.37.0) covering major changes: a complete rewrite of the string/binary type that...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/5434e7bec80a8efdf8c46b2f6f76f432?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/5434e7bec80a8efdf8c46b2f6f76f432?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Polars Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Polars Blog","logo":"https://media.daily.dev/image/upload/s--xo60W3UW--/c_limit,w_256/f_auto,q_auto/v1786870390/logos/polars?_a=BAMAMicg0","url":"https://daily.dev/sources/polars"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/polars-in-aggregate-new-string-type-plotting-sql-and-more-qk4oz4jjd","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"python,rust,sql,polars","timeRequired":"PT6M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Polars Blog","item":"https://daily.dev/sources/polars"},{"@type":"ListItem","position":3,"name":"Polars in Aggregate: New string type, plotting, SQL and more"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/polars-in-aggregate-new-string-type-plotting-sql-and-more-qk4oz4jjd#faq","mainEntity":[{"@type":"Question","name":"How did Polars improve string filtering performance in its string type rewrite?","acceptedAnswer":{"@type":"Answer","text":"Polars rewrote its string/binary type so that filter operation time complexity dropped from O(n·k) to O(n), making filtering independent of string length. This fixed pathological performance cases, and the change is expected to improve many other string-related operations as well, delivered across the 0.20.x Python release series. Track library changelogs like this one on daily.dev before a dependency upgrade surprises your data pipeline."}},{"@type":"Question","name":"How can I create plots directly from a Polars DataFrame?","acceptedAnswer":{"@type":"Answer","text":"Polars added native plotting support through integration with the hvPlot library, installable via the feature flag command pip install \"polars[plot]\". It supports multiple backends including interactive Bokeh or Plotly plots and static Matplotlib plots, with methods like df.plot.line() and df.plot.scatter() available directly on DataFrames. Developers evaluating dataframe tooling can follow feature rollouts like this on daily.dev."}},{"@type":"Question","name":"Does Polars support a native Python DataFrame interchange protocol without requiring PyArrow?","acceptedAnswer":{"@type":"Answer","text":"Yes, Polars shipped a native implementation of the DataFrame interchange protocol starting in version 0.20.4, removing the prior dependency on PyArrow. This lets third-party libraries like scikit-learn or plotting tools convert Polars DataFrames to and from other DataFrame libraries without extra dependencies or copying data. daily.dev helps engineers keep up with dependency changes like this before they hit a build."}}]}
```

