nodejs-polars
    Preparing search index...

    nodejs-polars

    Polars

    Polars: Blazingly fast DataFrames in Rust, Python, Node.js, R and SQL

    rust docs Build and test PyPI Latest Release NPM Latest Release

    Documentation: Node.js - Rust - Python - R |StackOverflow: Node.js - Rust - Python | User Guide | Discord

    // esm
    import pl from 'nodejs-polars';

    // require
    const pl = require('nodejs-polars');
    > const fooSeries = pl.Series("foo", [1, 2, 3])
    > fooSeries.sum()
    6

    // a lot operations support both positional and named arguments
    // you can see the full specs in the docs or the type definitions
    > fooSeries.sort(true)
    > fooSeries.sort({descending: true})
    shape: (3,)
    Series: 'foo' [f64]
    [
    3
    2
    1
    ]
    > fooSeries.toArray()
    [1, 2, 3]

    // Series are 'Iterables' so you can use javascript iterable syntax on them
    > [...fooSeries]
    [1, 2, 3]

    > fooSeries[0]
    1
    >const df = pl.DataFrame(
    ... {
    ... A: [1, 2, 3, 4, 5],
    ... fruits: ["banana", "banana", "apple", "apple", "banana"],
    ... B: [5, 4, 3, 2, 1],
    ... cars: ["beetle", "audi", "beetle", "beetle", "beetle"],
    ... }
    ... )
    > df.sort("fruits").select(
    ... "fruits",
    ... "cars",
    ... pl.lit("fruits").alias("literal_string_fruits"),
    ... pl.col("B").filter(pl.col("cars").eq(pl.lit("beetle"))).sum(),
    ... pl.col("A").filter(pl.col("B").gt(2)).sum().over("cars").alias("sum_A_by_cars"),
    ... pl.col("A").sum().over("fruits").alias("sum_A_by_fruits"),
    ... pl.col("A").reverse().over("fruits").flatten().alias("rev_A_by_fruits")
    ... )
    shape: (5, 8)
    ┌──────────┬──────────┬──────────────┬─────┬─────────────┬─────────────┬─────────────┐
    fruitscarsliteral_striBsum_A_by_casum_A_by_frrev_A_by_fr
    │ --- ┆ --- ┆ ng_fruits ┆ --- ┆ rsuitsuits
    strstr ┆ --- ┆ i64 ┆ --- ┆ --- ┆ --- │
    │ ┆ ┆ str ┆ ┆ i64i64i64
    ╞══════════╪══════════╪══════════════╪═════╪═════════════╪═════════════╪═════════════╡
    "apple""beetle""fruits"11474
    ├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
    "apple""beetle""fruits"11473
    ├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
    "banana""beetle""fruits"11485
    ├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
    "banana""audi""fruits"11282
    ├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
    "banana""beetle""fruits"11481
    └──────────┴──────────┴──────────────┴─────┴─────────────┴─────────────┴─────────────┘
    > df["cars"] // or df.getColumn("cars")
    shape: (5,)
    Series: 'cars' [str]
    [
    "beetle"
    "beetle"
    "beetle"
    "audi"
    "beetle"
    ]

    Install the latest polars version with:

    $ yarn add nodejs-polars # yarn
    $ npm i -s nodejs-polars # npm
    $ bun i -D nodejs-polars # Bun

    Releases happen quite often (weekly / every few days) at the moment, so updating polars regularly to get the latest bugfixes / features might not be a bad idea.

    • Node version >=18
    • Rust version >=1.86 - Only needed for development

    In Deno modules you can import polars straight from npm:

    import pl from "npm:nodejs-polars";
    

    With Deno 1.37, you can use the display function to display a DataFrame in the notebook:

    import pl from "npm:nodejs-polars";
    import { display } from "https://deno.land/x/display@v1.1.2/mod.ts";

    let response = await fetch(
    "https://cdn.jsdelivr.net/npm/world-atlas@1/world/110m.tsv",
    );
    let data = await response.text();
    let df = pl.readCSV(data, { sep: "\t" });
    await display(df)

    With Deno 1.38, you only have to make the dataframe be the last expression in the cell:

    import pl from "npm:nodejs-polars";
    let response = await fetch(
    "https://cdn.jsdelivr.net/npm/world-atlas@1/world/110m.tsv",
    );
    let data = await response.text();
    let df = pl.readCSV(data, { sep: "\t" });
    df
    image

    Want to know about all the features Polars supports? Read the docs!

    Want to contribute? Read our contribution guideline.

    If you want a bleeding edge release or maximal performance you should compile polars from source.

    1. Install the latest Rust compiler
    2. Run npm|yarn install
    3. Choose any of:
      • Fastest binary, very long compile times:
        $ cd nodejs-polars && yarn build && yarn build:ts # this will generate a /bin directory with the compiles TS code, as well as the rust binary
        
      • Debugging, fastest compile times but slow & large binary:
        $ cd nodejs-polars && yarn build:debug && yarn build:ts # this will generate a /bin directory with the compiles TS code, as well as the rust binary
        

    To use nodejs-polars with Webpack please use node-loader and webpack.config.js

    Development of Polars is proudly powered by

    Xomnia