<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Polars on Asadbek Kurbonov</title><link>https://advenn.github.io/blog/tags/polars/</link><description>Recent content in Polars on Asadbek Kurbonov</description><generator>Hugo -- 0.148.0</generator><language>en-us</language><lastBuildDate>Sun, 23 Nov 2025 23:02:39 +0100</lastBuildDate><atom:link href="https://advenn.github.io/blog/tags/polars/index.xml" rel="self" type="application/rss+xml"/><item><title>Pandas vs Polars in Production: Performance Comparison</title><link>https://advenn.github.io/blog/posts/pandas-vs-polars-in-production/</link><pubDate>Sun, 23 Nov 2025 23:02:39 +0100</pubDate><guid>https://advenn.github.io/blog/posts/pandas-vs-polars-in-production/</guid><description>&lt;p>When performance bottlenecks started affecting my production data pipeline, I decided to test whether Polars could deliver on its performance promises. This is what I learned from migrating a real production workload from Pandas to Polars.&lt;/p>
&lt;h2 id="the-workload">The Workload&lt;/h2>
&lt;p>The application was a data aggregation service running as a Kubernetes pod with the following constraints:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Resources&lt;/strong>: 2 CPUs, 3 GB RAM&lt;/li>
&lt;li>&lt;strong>Execution frequency&lt;/strong>: Every 2-2.5 minutes&lt;/li>
&lt;li>&lt;strong>Data volume&lt;/strong>: 5,000-7,000 rows × 100-150 columns per run&lt;/li>
&lt;li>&lt;strong>Operations&lt;/strong>: Multiple database calls, API requests, DataFrame merges, arithmetic operations (additions, multiplications), and group-by aggregations&lt;/li>
&lt;li>&lt;strong>Web server&lt;/strong>: FastAPI with Uvicorn handling production traffic&lt;/li>
&lt;/ul>
&lt;p>All operations were properly vectorized-no row-by-row iteration. The pipeline combined data from various sources into a single DataFrame, transformed it, and output the results.&lt;/p></description></item></channel></rss>