This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
backendhigh PriorityID: polars-dataframe-zero-copy-rust

Polars High-Performance DataFrame & Lazy Execution Architecture

Production standard for high-performance data engineering and analytics in Python. Mandates Polars LazyFrame query optimization (predicate/projection pushdown), zero-copy Apache Arrow memory layouts, and streaming execution over legacy Pandas to eliminate GIL single-thread bottlenecks.

Prohibited Anti-Pattern: AI writes Pandas pd.read_csv() and .apply() row loops, exhausting RAM and locking the single-threaded Python GIL on multi-gigabyte datasets.

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Polars High-Performance DataFrame & Lazy Execution Architecture - Production standard for high-performance data engineering and analytics in Python. Mandates Polars LazyFrame query optimization (predicate/projection pushdown), zero-copy Apache Arrow memory layouts, and streaming execution over legacy Pandas to eliminate GIL single-thread bottlenecks.
globs: **/analytics/**/*.py, **/etl/**/*.py, **/*pipeline*.py
alwaysApply: false
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/polars-dataframe-zero-copy-rust"
---

# Polars High-Performance DataFrame & Lazy Execution Architecture

> **Severity**: HIGH | **Category**: backend
> **Anti-Pattern Warning**: AI writes Pandas pd.read_csv() and .apply() row loops, exhausting RAM and locking the single-threaded Python GIL on multi-gigabyte datasets.

## System Constraints
You are a High-Performance Data Engineering Specialist. When performing tabular data processing in Python, NEVER fall back to legacy Pandas loops (df.apply) or unbuffered pd.read_csv(). Use Polars with pl.scan_parquet() or pl.scan_csv(), formulate lazy query execution plans, and leverage multi-threaded Rust execution.

## Strict Guidelines
- Always build query plans using polars.LazyFrame (scan_parquet/scan_csv) to allow query engine optimization (filter pushdown, projection pruning).
- Never use Python row-wise loops (for row in df or df.apply); use native Polars expressions (pl.col().when().then().otherwise()).
- Use collect(streaming=True) to process datasets larger than available RAM in streaming batches without triggering OOM errors.
- Prefer Parquet or IPC/Feather columnar formats with snappy/zstd compression over raw text CSVs.
- Explicitly cast numeric columns to the smallest suitable width (e.g. pl.UInt32, pl.Float32) to maximize CPU L3 cache locality.

## Bad vs Good Implementations
### Out-of-Core LazyFrame Aggregation in Polars vs Legacy Pandas

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Pandas eagerly loads the entire CSV into RAM, duplicating memory allocations. The .apply() loop drops into pure Python byte-code execution on a single core, causing hours of CPU thrashing.
```python
# FATAL: Inefficient Pandas loading entire 20GB dataset into memory with row-wise apply
import pandas as pd

# Crashes with Out of Memory (OOM) error on large datasets
df = pd.read_csv("transactions_20gb.csv")

# Extremely slow single-threaded Python GIL row iteration
df["fee"] = df.apply(lambda row: row["amount"] * 0.02 if row["type"] == "WIRE" else 0.0, axis=1)
result = df.groupby("user_id")["fee"].sum()
```

#### Production Standard (Correct)
> **Standard**: Leverages Polars LazyFrame with predicate pushdown and streaming out-of-core execution. Operates natively across all CPU cores with zero-copy SIMD instructions, processing 20GB data in seconds with minimal RAM footprint.
```python
import polars as pl

# 1. Zero-memory scan plan: Does not read disk until collect() is invoked
lazy_plan = (
    pl.scan_parquet("transactions_20gb.parquet")
    # Predicate Pushdown: Engine filters rows BEFORE reading unneeded columns
    .filter(pl.col("status") == "COMPLETED")
    .select([
        pl.col("user_id"),
        pl.col("amount"),
        pl.col("type"),
        # Vectorized SIMD-accelerated Rust expression
        pl.when(pl.col("type") == "WIRE")
        .then(pl.col("amount") * 0.02)
        .otherwise(0.0)
        .alias("fee")
    ])
    .group_by("user_id")
    .agg([
        pl.col("fee").sum().alias("total_fee"),
        pl.len().alias("tx_count")
    ])
)

# 2. Out-of-Core multi-threaded execution (runs on all CPU cores with streaming batching)
result_df = lazy_plan.collect(streaming=True)
```

Recommended MCP Servers (mcp-serverlist.com)

Equip agent with system tools to verify code for this stack.

Recommended Agent Skills (askills.dev)

Ready-to-use executable skill functions tailored to this stack.

Architectural Specification & Invariant Rationale

Architectural Invariant Design: Polars High-Performance DataFrame & Lazy Execution Architecture

Polars High-Performance DataFrame & Lazy Execution Architecture defines an industrial-grade behavioral standard for backend engineering. Production standard for high-performance data engineering and analytics in Python. Mandates Polars LazyFrame query optimization (predicate/projection pushdown), zero-copy Apache Arrow memory layouts, and streaming execution over legacy Pandas to eliminate GIL single-thread bottlenecks. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: AI writes Pandas pd.read_csv() and .apply() row loops, exhausting RAM and locking the single-threaded Python GIL on multi-gigabyte datasets. Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftAI writes Pandas pd.read_csv() and .apply() row loops, exhausting RAM and locking the single-threaded Python GIL on multi-gigabyte datasets.High
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Always build query plans using polars.LazyFrame (scan_parquet/scan_csv) to allow query engine optimization (filter pushdown, projection pruning).

Always build query plans using polars.LazyFrame (scan_parquet/scan_csv) to allow query engine optimization (filter pushdown, projection pruning).

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Never use Python row-wise loops (for row in df or df.apply)

Never use Python row-wise loops (for row in df or df.apply); use native Polars expressions (pl.col().when().then().otherwise()).

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Use collect(streaming=True) to process datasets larger than available RAM in streaming batches without triggering OOM errors.

Use collect(streaming=True) to process datasets larger than available RAM in streaming batches without triggering OOM errors.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Prefer Parquet or IPC/Feather columnar formats with snappy/zstd compression over raw text CSVs.

Prefer Parquet or IPC/Feather columnar formats with snappy/zstd compression over raw text CSVs.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Explicitly cast numeric columns to the smallest suitable width (e.g. pl.UInt32, pl.Float32) to maximize CPU L3 cache locality.

Explicitly cast numeric columns to the smallest suitable width (e.g. pl.UInt32, pl.Float32) to maximize CPU L3 cache locality.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is Polars High-Performance DataFrame & Lazy Execution Architecture critical for AI coding assistants?

Production standard for high-performance data engineering and analytics in Python. Mandates Polars LazyFrame query optimization (predicate/projection pushdown), zero-copy Apache Arrow memory layouts, and streaming execution over legacy Pandas to eliminate GIL single-thread bottlenecks. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (AI writes Pandas pd.read_csv() and .apply() row loops, exhausting RAM and locking the single-threaded Python GIL on multi-gigabyte datasets.) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

Polars