Skip to content
Skills Library
Programming · Building & coding

dataframes

/dataframes

Pandas and Polars for tabular data: when to use which, indexing and dtypes, joins and reshaping, lazy Polars, I/O and Parquet, nulls, Arrow interop, and performance. Use for DataFrame/Series/LazyFrame code. Triggers on pandas, polars, DataFrame, LazyFrame, parquet, groupby, merge, join.

Repository
pyref ↗
Licence
LGPL
Last repository change
17.10.2026

Assessment and security

90/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content25 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
7
Scripts
0
HTML comments
0
URLs in SKILL.md
3
Deprecation

No signals detected. Repository changed on 17.10.2026, without references to retired models or APIs.

Licence

LGPL, otwarta.

What it does and when to use it

Pandas and Polars for tabular data: when to use which, indexing and dtypes, joins and reshaping, lazy Polars, I/O and Parquet, nulls, Arrow interop, and performance. Use for DataFrame/Series/LazyFrame code. Triggers on pandas, polars, DataFrame, LazyFrame, parquet, groupby, merge, join.

Original author description

Pandas and Polars for tabular data: when to use which, indexing and dtypes, joins and reshaping, lazy Polars, I/O and Parquet, nulls, Arrow interop, and performance. Use for DataFrame/Series/LazyFrame code. Triggers on pandas, polars, DataFrame, LazyFrame, parquet, groupby, merge, join.

How it works

  1. Quick start
  2. Stack synergy
  3. Reference index
  4. Official documentation
  5. Dependencies
Original SKILL.md headings · 43 lines, 300 words
SKILL.md preview
---
author: dotagents
name: dataframes
description: Pandas and Polars for tabular data: when to use which, indexing and dtypes, joins and reshaping, lazy Polars, I/O and Parquet, nulls, Arrow interop, and performance. Use for DataFrame/Series/LazyFrame code. Triggers on pandas, polars, DataFrame, LazyFrame, parquet, groupby, merge, join.
---

# Dataframes (pandas + Polars)

## Quick start

1. **Pick one engine per pipeline**: **pandas** when **index semantics**, **mixed columns**, and **ecosystem** (statsmodels, sklearn I/O) matter; **Polars** when **large scans**, **lazy plans**, and **expression** clarity win. See [reference-when-which.md](references/reference-when-which.md).
2. **pandas**: be explicit with **`loc` / `iloc`**, **`assign`**, and **dtypes**; understand **views vs copies** and **Copy-on-Write** (2.x). See [reference-pandas-core.md](references/reference-pandas-core.md).
3. **Polars**: default to **`scan_*` + `lazy()`** for big data; build with **`select` / `with_columns` / `filter`** and **`pl.col`**; **`collect`** at the boundary. See [reference-polars.md](references/reference-polars.md).
4. **Joins and groups**: validate **row counts** and **duplicates**; name **suffixes**; prefer **Polars** for parallel group-by on large tables when the project already uses it. See [reference-pandas-group-join.md](references/reference-pandas-group-join.md) and [reference-polars.md](references/reference-polars.md).
5. **I/O**: **Parquet** (often **PyArrow**) for analytics interchange; **`uv add pyarrow`** when the stack needs it. See [reference-io-dtypes-nulls.md](references/reference-io-dtypes-nulls.md).
6. **Handoff**: convert at **module boundaries** with **`from_pandas`** / **`to_pandas`** or **Arrow**; avoid ping-pong in inner loops. See [reference-interop-performance.md](references/reference-interop-performance.md).

## Stack synergy

| Resource | Role |
|----------|------|
| **Python spec** | Explicit pandas index/columns; lazy Polars for heavy queries |
| **numpy-scientific** | `to_numpy()`, dtypes, contiguous buffers |
| **matplotlib-scientific** | `df.plot(ax=ax)` and Polars `.to_pandas()` for plotting when needed |
| **numpy-docstrings** | Public API docstrings for DataFrame-returning functions |
| **general-python** | uv, ty, **python-reviewer** |

## Reference index

| Topic | File |
|--------|------|
| pandas vs Polars, boundaries | [reference-when-which.md](references/reference-when-which.md) |
| Index, `loc`/`iloc`, dtypes, COW, assignment | [reference-pandas-core.md](references/reference-pandas-core.md) |
| GroupBy, merge/join, concat, pivot | [reference-pandas-group-join.md](references/reference-pandas-group-join.md) |
| LazyFrame, expressions, group, join | [reference-polars.md](references/reference-polars.md) |
| CSV/Parquet, nulls, dtypes, Arrow | [reference-io-dtypes-nulls.md](references/reference-io-dtypes-nulls.md) |
| Conversion, streaming, typing | [reference-interop-performance.md](references/reference-interop-performance.md) |

## Official documentation

- [pandas user guide](https://pandas.pydata.org/docs/user_guide/index.html)
- [Polars user guide](https://docs.pola.rs/user-guide/)
- [Polars API](https://docs.pola.rs/api/python/stable/reference/index.html)

## Dependencies

Use **`uv add pandas`**, **`uv add polars`**, **`uv add pyarrow`** as needed; do not hand-edit version pins in `pyproject.toml`.
Files in this package (7)
  • SKILL.md 3 KB
  • references/reference-interop-performance.md 2 KB
  • references/reference-io-dtypes-nulls.md 1 KB
  • references/reference-pandas-core.md 2 KB
  • references/reference-pandas-group-join.md 1 KB
  • references/reference-polars.md 2 KB
  • references/reference-when-which.md 2 KB

Versions

The database has no other skills named dataframes.

Database snapshot: 13.11.2026 · package version cb85528adef9 (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 100polars
    Polars is a fast DataFrame library written in Rust with Python bindings, built on Apache Arrow with lazy evaluation and a streaming engine for larger-than-memory data. Use it when a user asks to replace pandas for speed, read CSV or Parquet files, write expressions, group_by,…
  • 95polars-dataframes
    Fast in-memory DataFrame with lazy evaluation, parallel execution, Arrow backend. Use for tabular data in RAM (1–100 GB) when pandas is too slow. Expression API: select, filter, group_by, joins, pivots, window. Lazy mode enables predicate/projection pushdown. Reads CSV, Parquet,…
  • 100polars
    Writes fast, idiomatic Polars in Python using the lazy API, and answers natural-language questions about data in one shot. Use this skill whenever a task involves loading, querying, transforming, aggregating, joining, or analyzing tabular data (CSV, Parquet, NDJSON, or…
  • 100polars
    Expression-based DataFrame library for Python and Rust. Use for eager or lazy tabular analytics, ETL, and pandas migration; streaming support and memory needs depend on the query.
  • 100data-analysis
    Analyzes tabular data from CSV, Parquet or dataframes with pandas, Polars and DuckDB. Use when totals do not reconcile, a join duplicates rows, comparing groups or trends, a metric's grain or denominator matters, timezones shift daily counts, or a file is too large to load into…
  • 100polars
    High-performance DataFrame library for Python ETL, analytics, and pandas migration. Use for expression-based data manipulation with lazy query optimization, parallel execution, streaming out-of-core processing, Arrow interoperability, and optional GPU execution.

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.