Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Fast in-memory DataFrame library for datasets that fit in RAM. Use when pandas is too slow but data still fits in memory. Lazy evaluation, parallel execution, Apache Arrow backend. Best for 1-100GB datasets, ETL pipelines, faster pandas replacement. For larger-than-RAM data use dask or vaex.
.claude/skills/mkurman-polars/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 84% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 27% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 24% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 55% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 35% | 0% |
-----|--------|--------| | Select column | df["col"] | df.select("col") | | Filter | df[df["col"] > 10] | df.filter(pl.col("col") > 10) | | Add column | df.assign(x=...) | df.with_columns(x=...) | | Group by | df.groupby("col").agg(...) | df.group_by("col").agg(...) | | Window | df.groupby("col").transform(...) | df.with_columns(...).over("col") |
Pandas sequential (slow):
pythondf.assign( col_a=lambda df_: df_.value * 10, col_b=lambda df_: df_.value * 100 )
Polars parallel (fast):
pythondf.with_columns( col_a=pl.col("value") * 10, col_b=pl.col("value") * 100, )
For comprehensive migration guide, load references/pandas_migration.md.
python lf = pl.scan_csv("large.csv") # Don't use read_csv result = lf.filter(...).select(...).collect()
.map_elements() only when necessarypython lf.collect(streaming=True)
python # Good: Select columns early lf.select("col1", "col2").filter(...)
# Bad: Filter on all columns first lf.filter(...).select("col1", "col2")
Conditional operations:
pythonpl.when(condition).then(value).otherwise(other_value)
Column operations across multiple columns:
pythondf.select(pl.col("^.*_value$") * 2) # Regex pattern
Null handling:
pythonpl.col("x").fill_null(0) pl.col("x").is_null() pl.col("x").drop_nulls()
For additional best practices and patterns, load references/best_practices.md.
This skill includes comprehensive reference documentation:
core_concepts.md - Detailed explanations of expressions, lazy evaluation, and type systemoperations.md - Comprehensive guide to all common operations with examplespandas_migration.md - Complete migration guide from pandas to Polarsio_guide.md - Data I/O operations for all supported formatstransformations.md - Joins, concatenation, pivots, and reshaping operationsbest_practices.md - Performance optimization tips and common patternsLoad these references as needed when users require detailed information about specific topics.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 15,625 | 13,974 | -11% | 1 | 1 | 0% | 2,708 | 3,323 | +23% | 0 | 0 | — |
case-02 | pass→pass | 7,729 | 4,855 | -37% | 1 | 1 | 0% | 1,281 | 1,625 | +27% | 0 | 0 | — |
case-03 | pass→pass | 8,798 | 7,202 | -18% | 1 | 1 | 0% | 1,666 | 2,068 | +24% | 0 | 0 | — |
case-04 | pass→pass | 6,501 | 5,059 | -22% | 1 | 1 | 0% | 1,119 | 1,733 | +55% | 0 | 0 | — |
case-05 | pass→pass | 10,654 | 9,289 | -13% | 1 | 1 | 0% | 1,893 | 2,562 | +35% | 0 | 0 | — |
case-06 | pass→pass | 3,280 | 3,048 | -7% | 1 | 1 | 0% | 552 | 1,307 | +137% | 0 | 0 | — |
case-07 | fail→pass | 7,114 | 7,600 | +7% | 1 | 1 | 0% | 1,179 | 2,171 | +84% | 0 | 0 | — |
case-08 | pass→pass | 7,163 | 5,510 | -23% | 1 | 1 | 0% | 1,316 | 1,785 | +36% | 0 | 0 | — |
case-09 | pass→pass | 3,087 | 3,080 | -0% | 1 | 1 | 0% | 494 | 1,261 | +155% | 0 | 0 | — |
case-10 | pass→pass | 10,390 | 9,910 | -5% | 1 | 1 | 0% | 1,820 | 2,460 | +35% | 0 | 0 | — |
case-11 | pass→pass | 6,040 | 5,331 | -12% | 1 | 1 | 0% | 1,052 | 1,656 | +57% | 0 | 0 | — |
case-12 | pass→pass | 8,519 | 6,857 | -20% | 1 | 1 | 0% | 1,629 | 2,133 | +31% | 0 | 0 | — |
case-13 | pass→pass | 5,832 | 5,314 | -9% | 1 | 1 | 0% | 1,043 | 1,745 | +67% | 0 | 0 | — |
case-14 | pass→pass | 2,709 | 3,392 | +25% | 1 | 1 | 0% | 427 | 1,344 | +215% | 0 | 0 | — |
case-15 | pass→pass | 7,290 | 6,101 | -16% | 1 | 1 | 0% | 1,362 | 1,891 | +39% | 0 | 0 | — |
case-16 | pass→pass | 3,955 | 4,405 | +11% | 1 | 1 | 0% | 657 | 1,336 | +103% | 0 | 0 | — |
case-17 | pass→pass | 10,221 | 5,432 | -47% | 1 | 1 | 0% | 1,876 | 1,870 | -0% | 0 | 0 | — |
case-18 | pass→pass | 4,498 | 2,903 | -35% | 1 | 1 | 0% | 786 | 1,326 | +69% | 0 | 0 | — |
case-19 | pass→pass | 16,968 | 14,060 | -17% | 1 | 1 | 0% | 2,941 | 3,356 | +14% | 0 | 0 | — |
case-20 | pass→pass | 3,634 | 4,533 | +25% | 1 | 1 | 0% | 611 | 1,531 | +151% | 0 | 0 | — |
case-21 | pass→pass | 9,525 | 7,457 | -22% | 1 | 1 | 0% | 1,687 | 2,001 | +19% | 0 | 0 | — |
case-22 | pass→pass | 5,555 | 4,183 | -25% | 1 | 1 | 0% | 1,090 | 1,474 | +35% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +5 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.