Skills Agentes

Polars

Librería de DataFrames de alto rendimiento para ETL, analítica y migración desde pandas en Python: expresiones, optimización de consultas lazy, ejecución paralela, streaming out-of-core, Arrow y GPU opcional.

Reemplaza a: pandas (para ETL/analítica de mayor rendimiento y migración)

Solicitaread
Estrellas
45.9k

en todo el repo

Actividad
58

0–100, la ruta de este skill

Actualizado
hace 2 meses

último commit aquí

Commits
3

últimos 90 días

Contexto
2.4k tok

66 tok en reposo

Paquete
7 archivos

78 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add K-Dense-AI/scientific-agent-skills --skill polars --agent claude-code

Se instala solo en este repositorio.

Qué hace

  • Ofrece manipulación de datos basada en expresiones (`pl.col`, `select`, `filter`, `with_columns`) sobre DataFrames de Polars.
  • Usa evaluación lazy (`LazyFrame`) con optimización de consultas: predicate/projection pushdown y ejecución paralela.
  • Soporta streaming out-of-core para datasets grandes y ejecución opcional en GPU.
  • Facilita la migración desde pandas y la interoperabilidad con Apache Arrow.

Úsalo cuando

  • Manipular datos con una API basada en expresiones en Python.
  • Trabajar con datasets grandes o pipelines de consultas complejas donde solo se necesitan algunas columnas/filas (modo lazy).
  • Migrar un flujo de trabajo de pandas a Polars.
  • Necesitar alto rendimiento en ETL o analítica.

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • “Migra este script de pandas a Polars”
    • “Filtra y agrega esta tabla con Polars en modo lazy”
    • “Lee este CSV grande con streaming en Polars”
    • “Optimiza esta consulta de Polars con predicate pushdown”

    SKILL.md

    En inglés

    Polars

    Overview

    Polars is a lightning-fast DataFrame library for Python and Rust built on Apache Arrow. Work with Polars' expression-based API, lazy evaluation framework, and high-performance data manipulation capabilities for efficient data processing, pandas migration, and data pipeline optimization.

    Quick Start

    Installation and Basic Usage

    Install the current stable Polars release verified during this refresh:

    uv pip install "polars==1.41.2"
    

    Install optional integrations only when needed:

    uv pip install "polars[excel,database,fsspec,pandas,numpy]==1.41.2"
    

    Basic DataFrame creation and operations:

    import polars as pl
    
    # Create DataFrame
    df = pl.DataFrame({
        "name": ["Alice", "Bob", "Charlie"],
        "age": [25, 30, 35],
        "city": ["NY", "LA", "SF"]
    })
    
    # Select columns
    df.select("name", "age")
    
    # Filter rows
    df.filter(pl.col("age") > 25)
    
    # Add computed columns
    df.with_columns(
        age_plus_10=pl.col("age") + 10
    )
    

    Core Concepts

    Expressions

    Expressions are the fundamental building blocks of Polars operations. They describe transformations on data and can be composed, reused, and optimized.

    Key principles:

    • Use pl.col("column_name") to reference columns
    • Chain methods to build complex transformations
    • Expressions are lazy and only execute within contexts (select, with_columns, filter, group_by)

    Example:

    # Expression-based computation
    df.select(
        pl.col("name"),
        (pl.col("age") * 12).alias("age_in_months")
    )
    

    Lazy vs Eager Evaluation

    Eager (DataFrame): Operations execute immediately

    df = pl.read_csv("file.csv")  # Reads immediately
    result = df.filter(pl.col("age") > 25)  # Executes immediately
    

    Lazy (LazyFrame): Operations build a query plan, optimized before execution

    lf = pl.scan_csv("file.csv")  # Doesn't read yet
    result = lf.filter(pl.col("age") > 25).select("name", "age")
    df = result.collect()  # Now executes optimized query
    

    When to use lazy:

    • Working with large datasets
    • Complex query pipelines
    • When only some columns/rows are needed
    • Performance is critical

    Benefits of lazy evaluation:

    • Automatic query optimization
    • Predicate pushdown
    • Projection pushdown
    • Parallel execution

    For detailed concepts, load references/core_concepts.md.

    Common Operations

    Select

    Select and manipulate columns:

    # Select specific columns
    df.select("name", "age")
    
    # Select with expressions
    df.select(
        pl.col("name"),
        (pl.col("age") * 2).alias("double_age")
    )
    
    # Select all columns matching a pattern
    df.select(pl.col("^.*_id$"))
    

    Filter

    Filter rows by conditions:

    # Single condition
    df.filter(pl.col("age") > 25)
    
    # Multiple conditions (cleaner than using &)
    df.filter(
        pl.col("age") > 25,
        pl.col("city") == "NY"
    )
    
    # Complex conditions
    df.filter(
        (pl.col("age") > 25) | (pl.col("city") == "LA")
    )
    

    With Columns

    Add or modify columns while preserving existing ones:

    # Add new columns
    df.with_columns(
        age_plus_10=pl.col("age") + 10,
        name_upper=pl.col("name").str.to_uppercase()
    )
    
    # Parallel computation (all columns computed in parallel)
    df.with_columns(
        pl.col("value") * 10,
        pl.col("value") * 100,
    )
    

    Group By and Aggregations

    Group data and compute aggregations:

    # Basic grouping
    df.group_by("city").agg(
        pl.col("age").mean().alias("avg_age"),
        pl.len().alias("count")
    )
    
    # Multiple group keys
    df.group_by("city", "department").agg(
        pl.col("salary").sum()
    )
    
    # Conditional aggregations
    df.group_by("city").agg(
        (pl.col("age") > 30).sum().alias("over_30")
    )
    

    For detailed operation patterns, load references/operations.md.

    Aggregations and Window Functions

    Aggregation Functions

    Common aggregations within group_by context:

    • pl.len() - count rows
    • pl.col("x").sum() - sum values
    • pl.col("x").mean() - average
    • pl.col("x").min() / pl.col("x").max() - extremes
    • pl.first() / pl.last() - first/last values

    Window Functions with over()

    Apply aggregations while preserving row count:

    # Add group statistics to each row
    df.with_columns(
        avg_age_by_city=pl.col("age").mean().over("city"),
        rank_in_city=pl.col("salary").rank().over("city")
    )
    
    # Multiple grouping columns
    df.with_columns(
        group_avg=pl.col("value").mean().over("category", "region")
    )
    

    Mapping strategies:

    • group_to_rows (default): Preserves original row order
    • explode: Faster but groups rows together
    • join: Creates list columns

    Data I/O

    Supported Formats

    Polars supports reading and writing:

    • CSV, Parquet, JSON, Excel
    • Databases (via connectors)
    • Cloud storage (S3, Azure, GCS)
    • Google BigQuery
    • Multiple/partitioned files

    Common I/O Operations

    CSV:

    # Eager
    df = pl.read_csv("file.csv")
    df.write_csv("output.csv")
    
    # Lazy (preferred for large files)
    lf = pl.scan_csv("file.csv")
    result = lf.filter(...).select(...).collect()
    

    Parquet (recommended for performance):

    df = pl.read_parquet("file.parquet")
    df.write_parquet("output.parquet")
    

    JSON:

    df = pl.read_json("file.json")
    df.write_json("output.json")
    

    For comprehensive I/O documentation, load references/io_guide.md.

    Transformations

    Joins

    Combine DataFrames:

    # Inner join
    df1.join(df2, on="id", how="inner")
    
    # Left join
    df1.join(df2, on="id", how="left")
    
    # Join on different column names
    df1.join(df2, left_on="user_id", right_on="id")
    

    Concatenation

    Stack DataFrames:

    # Vertical (stack rows)
    pl.concat([df1, df2], how="vertical")
    
    # Horizontal (add columns)
    pl.concat([df1, df2], how="horizontal")
    
    # Diagonal (union with different schemas)
    pl.concat([df1, df2], how="diagonal")
    

    Pivot and Unpivot

    Reshape data:

    # Pivot (wide format)
    df.pivot(on="product", values="sales", index="date")
    
    # Unpivot (long format)
    df.unpivot(index="id", on=["col1", "col2"])
    

    For detailed transformation examples, load references/transformations.md.

    Pandas Migration

    Polars offers significant performance improvements over pandas with a cleaner API. Key differences:

    Conceptual Differences

    • No index: Polars uses integer positions only
    • Strict typing: No silent type conversions
    • Lazy evaluation: Available via LazyFrame
    • Parallel by default: Operations parallelized automatically

    Common Operation Mappings

    Operation Pandas Polars
    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")

    Key Syntax Patterns

    Pandas sequential (slow):

    df.assign(
        col_a=lambda df_: df_.value * 10,
        col_b=lambda df_: df_.value * 100
    )
    

    Polars parallel (fast):

    df.with_columns(
        col_a=pl.col("value") * 10,
        col_b=pl.col("value") * 100,
    )
    

    For comprehensive migration guide, load references/pandas_migration.md.

    Best Practices

    Performance Optimization

    1. Use lazy evaluation for large datasets:

      lf = pl.scan_csv("large.csv")  # Don't use read_csv
      result = lf.filter(...).select(...).collect()
      
    2. Avoid Python functions in hot paths:

      • Stay within expression API for parallelization
      • Use .map_elements() only when necessary
      • Prefer native Polars operations
    3. Use streaming for very large data:

      lf.collect(engine="streaming")
      
    4. Select only needed columns early:

      # Good: Select columns early
      lf.select("col1", "col2").filter(...)
      
      # Bad: Filter on all columns first
      lf.filter(...).select("col1", "col2")
      
    5. Use appropriate data types:

      • Categorical for low-cardinality strings
      • Appropriate integer sizes (i32 vs i64)
      • Date types for temporal data

    Expression Patterns

    Conditional operations:

    pl.when(condition).then(value).otherwise(other_value)
    

    Column operations across multiple columns:

    df.select(pl.col("^.*_value$") * 2)  # Regex pattern
    

    Null handling:

    pl.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.

    Resources

    This skill includes comprehensive reference documentation:

    references/

    • core_concepts.md - Detailed explanations of expressions, lazy evaluation, and type system
    • operations.md - Comprehensive guide to all common operations with examples
    • pandas_migration.md - Complete migration guide from pandas to Polars
    • io_guide.md - Data I/O operations for all supported formats
    • transformations.md - Joins, concatenation, pivots, and reshaping operations
    • best_practices.md - Performance optimization tips and common patterns

    Load these references as needed when users require detailed information about specific topics.

    Reproducido de K-Dense-AI/scientific-agent-skills bajo licencia https://github.com/pola-rs/polars/blob/main/LICENSE. Leer esta página en markdown.

    Archivos

    7 archivos en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Antes de instalar

    Requiere Python 3.10+; se instala con `uv pip install "polars==1.41.2"`, con extras opcionales para Excel, bases de datos, nube, pandas/NumPy y GPU.

    Detalles

    Creador
    K-Dense-AI
    Licencia
    https://github.com/pola-rs/polars/blob/main/LICENSE
    Recursos incluidos
    referencias
    Código fuente
    Ver SKILL.md

    Etiquetas

    Más de K-Dense-AI/scientific-agent-skills

    Este repo incluye 163 skills. Si instalas uno, normalmente ya tienes los demás. Ver el pack scientific-agent-skills entero y su comando de instalación

    Gestión integral de citas académicas: busca en OpenAlex, PubMed y Google Scholar, extrae metadatos precisos, valida citas y genera entradas BibTeX correctamente formateadas.

    Costo de contexto al activarse
    3.7k tok
    Tamaño del paquete
    21 archivos
    Última actualización
    hace 2 meses
    investigacion

    Realiza revisiones bibliográficas sistemáticas y completas usando varias bases académicas (PubMed, arXiv, bioRxiv, Semantic Scholar). Genera markdown y PDF con citas verificadas en varios estilos (APA, Nature, Vancouver).

    Costo de contexto al activarse
    3.2k tok
    Tamaño del paquete
    12 archivos
    Última actualización
    hace 2 meses
    investigacion

    Crea decks de diapositivas y presentaciones para charlas de investigación: PowerPoint, presentaciones de conferencia, seminarios, defensas de tesis. Da estructura, plantillas, guía de tiempos y validación visual.

    Costo de contexto al activarse
    5.1k tok
    Tamaño del paquete
    24 archivos
    Última actualización
    hace 2 meses
    documentos

    Crea infografías profesionales con Nano Banana Pro AI y refinamiento iterativo inteligente. Usa Gemini 3.6 Flash para revisar la calidad e integra investigación con Perplexity Sonar. Soporta 10 tipos, 8 estilos y paletas para daltonismo.

    Costo de contexto al activarse
    2.7k tok
    Tamaño del paquete
    8 archivos
    Última actualización
    hace 2 meses
    diseno ui

    Crea pósteres de investigación profesionales en LaTeX con beamerposter, tikzposter o baposter, para conferencias y comunicación científica: layout, colores, columnas múltiples e integración de figuras.

    Costo de contexto al activarse
    3.9k tok
    Tamaño del paquete
    17 archivos
    Última actualización
    hace 2 meses
    documentos

    Crea diagramas científicos de calidad de publicación con la IA Nano Banana 2 y refinamiento iterativo inteligente. Gemini 3.6 Flash revisa la calidad y solo regenera si está por debajo del umbral de tu tipo de documento.

    Costo de contexto al activarse
    4.1k tok
    Tamaño del paquete
    6 archivos
    Última actualización
    hace 2 meses
    diseno ui

    Skills relacionados

    Aeon

    45.9k

    Para tareas de machine learning con series temporales: clasificación, regresión, clustering, forecasting, detección de anomalías, segmentación y búsqueda de similitud, con APIs compatibles con scikit-learn.

    Costo de contexto al activarse
    3.1k tok
    Tamaño del paquete
    12 archivos
    Última actualización
    hace 2 meses
    datos analitica

    Anndata

    45.9k

    Estructura de datos para matrices anotadas en análisis de célula única. Úsala con archivos .h5ad o el ecosistema scverse; para análisis usa scanpy, para modelos probabilísticos scvi-tools, para escala poblacional cellxgene-census.

    Costo de contexto al activarse
    3k tok
    Tamaño del paquete
    6 archivos
    Última actualización
    hace 2 meses
    datos analitica

    Infiere redes de regulación génica (GRN) a partir de datos de expresión génica con algoritmos escalables (GRNBoost2, GENIE3), para transcriptómica bulk o de célula única, con computación distribuida.

    Costo de contexto al activarse
    2.1k tok
    Tamaño del paquete
    5 archivos
    Última actualización
    hace 2 meses
    datos analitica