nodejs-polars
Version:
Polars: Blazingly fast DataFrames in Rust, Python, Node.js, R and SQL
633 lines (632 loc) • 24.3 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.exprToLitOrExpr = exports.Expr = exports._Expr = void 0;
const dt = __importStar(require("./datetime"));
const lst = __importStar(require("./list"));
const str = __importStar(require("./string"));
const struct = __importStar(require("./struct"));
const types_1 = require("node:util/types");
const polars_internal_1 = __importDefault(require("../../internals/polars_internal"));
const series_1 = require("../../series");
const utils_1 = require("../../utils");
const _Expr = (_expr) => {
const unwrap = (method, ...args) => {
return _expr[method](...args);
};
const wrap = (method, ...args) => {
return (0, exports._Expr)(unwrap(method, ...args));
};
const wrapExprArg = (method, lit = false) => (other) => {
const expr = (0, exports.exprToLitOrExpr)(other, lit).inner();
return wrap(method, expr);
};
const rolling = (method) => (opts, weights, minPeriods, center) => {
const windowSize = opts?.["windowSize"] ?? (typeof opts === "number" ? opts : null);
if (windowSize === null) {
throw new Error("window size is required");
}
const callOpts = {
windowSize: windowSize,
weights: opts?.["weights"] ?? weights,
minPeriods: opts?.["minPeriods"] ?? minPeriods ?? windowSize,
center: opts?.["center"] ?? center ?? false,
};
return wrap(method, callOpts);
};
return {
_expr,
[Symbol.toStringTag]() {
return "Expr";
},
[utils_1.INSPECT_SYMBOL]() {
return _expr.toString();
},
serialize(format) {
return _expr.serialize(format);
},
toString() {
return _expr.toString();
},
toJSON(...args) {
// this is passed by `JSON.stringify` when calling `toJSON()`
if (args[0] === "") {
return _expr.toJs();
}
return _expr.serialize("json").toString();
},
get str() {
return str.ExprStringFunctions(_expr);
},
get lst() {
return lst.ExprListFunctions(_expr);
},
get date() {
return dt.ExprDateTimeFunctions(_expr);
},
get struct() {
return struct.ExprStructFunctions(_expr);
},
abs() {
return (0, exports._Expr)(_expr.abs());
},
aggGroups() {
return (0, exports._Expr)(_expr.aggGroups());
},
alias(name) {
return (0, exports._Expr)(_expr.alias(name));
},
inner() {
return _expr;
},
and(other) {
const expr = (0, exports.exprToLitOrExpr)(other, false).inner();
return (0, exports._Expr)(_expr.and(expr));
},
arccos() {
return (0, exports._Expr)(_expr.arccos());
},
arccosh() {
return (0, exports._Expr)(_expr.arccosh());
},
arcsin() {
return (0, exports._Expr)(_expr.arcsin());
},
arcsinh() {
return (0, exports._Expr)(_expr.arcsinh());
},
arctan() {
return (0, exports._Expr)(_expr.arctan());
},
arctanh() {
return (0, exports._Expr)(_expr.arctanh());
},
argMax() {
return (0, exports._Expr)(_expr.argMax());
},
argMin() {
return (0, exports._Expr)(_expr.argMin());
},
argSort(descending = false, maintainOrder) {
descending = descending?.descending ?? descending?.reverse ?? descending;
maintainOrder = descending?.maintainOrder ?? maintainOrder;
return (0, exports._Expr)(_expr.argSort(descending, false, false, maintainOrder));
},
argUnique() {
return (0, exports._Expr)(_expr.argUnique());
},
as(name) {
return (0, exports._Expr)(_expr.alias(name));
},
backwardFill() {
return (0, exports._Expr)(_expr.backwardFill());
},
cast(dtype, strict = false) {
return (0, exports._Expr)(_expr.cast(dtype, strict));
},
ceil() {
return (0, exports._Expr)(_expr.ceil());
},
clip(arg, max) {
if (typeof arg === "number") {
return (0, exports._Expr)(_expr.clip((0, exports.exprToLitOrExpr)(arg)._expr, (0, exports.exprToLitOrExpr)(max)._expr));
}
return (0, exports._Expr)(_expr.clip((0, exports.exprToLitOrExpr)(arg.min)._expr, (0, exports.exprToLitOrExpr)(arg.max)._expr));
},
cos() {
return (0, exports._Expr)(_expr.cos());
},
cosh() {
return (0, exports._Expr)(_expr.cosh());
},
cot() {
return (0, exports._Expr)(_expr.cot());
},
count() {
return (0, exports._Expr)(_expr.count());
},
cumCount(reverse = false) {
reverse = reverse?.reverse ?? reverse;
return (0, exports._Expr)(_expr.cumCount(reverse?.reverse ?? reverse));
},
cumMax(reverse = false) {
reverse = reverse?.reverse ?? reverse;
return (0, exports._Expr)(_expr.cumMax(reverse));
},
cumMin(reverse = false) {
reverse = reverse?.reverse ?? reverse;
return (0, exports._Expr)(_expr.cumMin(reverse));
},
cumProd(reverse = false) {
reverse = reverse?.reverse ?? reverse;
return (0, exports._Expr)(_expr.cumProd(reverse));
},
cumSum(reverse = false) {
reverse = reverse?.reverse ?? reverse;
return (0, exports._Expr)(_expr.cumSum(reverse));
},
diff(n, nullBehavior = "ignore") {
if (typeof n === "number") {
return (0, exports._Expr)(_expr.diff(n, nullBehavior));
}
return (0, exports._Expr)(_expr.diff(n.n, n.nullBehavior));
},
dot(other) {
const expr = (0, exports.exprToLitOrExpr)(other, false).inner();
return (0, exports._Expr)(_expr.dot(expr));
},
ewmMean(opts, adjust, minPeriods, bias, ignoreNulls) {
if (opts) {
if (typeof opts === "number") {
return wrap("ewmMean", opts, adjust ?? true, minPeriods ?? 1, bias ?? false, ignoreNulls ?? true);
}
return wrap("ewmMean", opts.alpha ?? 0.5, opts.adjust ?? true, opts.minPeriods ?? 1, opts.bias ?? false, opts.ignoreNulls ?? true);
}
return wrap("ewmMean", 0.5, true, 1, false, true);
},
ewmStd(opts, adjust, minPeriods, bias, ignoreNulls) {
if (opts) {
if (typeof opts === "number") {
return wrap("ewmStd", opts, adjust ?? true, minPeriods ?? 1, bias ?? false, ignoreNulls ?? true);
}
return wrap("ewmStd", opts.alpha ?? 0.5, opts.adjust ?? true, opts.minPeriods ?? 1, opts.bias ?? false, opts.ignoreNulls ?? true);
}
return wrap("ewmStd", 0.5, true, 1, false, true);
},
ewmVar(opts, adjust, minPeriods, bias, ignoreNulls) {
if (opts) {
if (typeof opts === "number") {
return wrap("ewmVar", opts, adjust ?? true, minPeriods ?? 1, bias ?? false, ignoreNulls ?? true);
}
return wrap("ewmVar", opts.alpha ?? 0.5, opts.adjust ?? true, opts.minPeriods ?? 1, opts.bias ?? false, opts.ignoreNulls ?? true);
}
return wrap("ewmVar", 0.5, true, 1, false, true);
},
exclude(...columns) {
return (0, exports._Expr)(_expr.exclude(columns.flat(2)));
},
explode() {
return (0, exports._Expr)(_expr.explode());
},
exp() {
return (0, exports._Expr)(_expr.exp());
},
extend(o, n) {
if (n !== null && typeof n === "number") {
return (0, exports._Expr)(_expr.extendConstant(o, n));
}
return (0, exports._Expr)(_expr.extendConstant(o.value, o.n));
},
extendConstant(o, n) {
if (n !== null && typeof n === "number") {
return (0, exports._Expr)(_expr.extendConstant(o, n));
}
return (0, exports._Expr)(_expr.extendConstant(o.value, o.n));
},
fillNan(other) {
const expr = (0, exports.exprToLitOrExpr)(other, true).inner();
return (0, exports._Expr)(_expr.fillNan(expr));
},
fillNull(fillValue) {
if (["backward", "forward", "mean", "min", "max", "zero", "one"].includes(fillValue)) {
return (0, exports._Expr)(_expr.fillNullWithStrategy(fillValue));
}
const expr = (0, exports.exprToLitOrExpr)(fillValue).inner();
return (0, exports._Expr)(_expr.fillNull(expr));
},
filter(predicate) {
const expr = (0, exports.exprToLitOrExpr)(predicate).inner();
return (0, exports._Expr)(_expr.filter(expr));
},
first() {
return (0, exports._Expr)(_expr.first());
},
flatten() {
return (0, exports._Expr)(_expr.explode());
},
floor() {
return (0, exports._Expr)(_expr.floor());
},
forwardFill() {
return (0, exports._Expr)(_expr.forwardFill());
},
gather(indices) {
if (Array.isArray(indices)) {
indices = polars_internal_1.default.lit((0, series_1.Series)(indices).inner());
}
else {
indices = indices.inner();
}
return wrap("gather", indices);
},
gatherEvery(n, offset = 0) {
return (0, exports._Expr)(_expr.gatherEvery(n, offset));
},
hash(obj = 0, k1 = 1, k2 = 2, k3 = 3) {
if (typeof obj === "number" || typeof obj === "bigint") {
return wrap("hash", BigInt(obj), BigInt(k1), BigInt(k2), BigInt(k3));
}
const o = { k0: obj, k1: k1, k2: k2, k3: k3, ...obj };
return wrap("hash", BigInt(o.k0), BigInt(o.k1), BigInt(o.k2), BigInt(o.k3));
},
head(length) {
if (typeof length === "number") {
return wrap("head", length);
}
return wrap("head", length.length);
},
interpolate(method = "linear") {
return (0, exports._Expr)(_expr.interpolate(method));
},
isDuplicated() {
return (0, exports._Expr)(_expr.isDuplicated());
},
isFinite() {
return (0, exports._Expr)(_expr.isFinite());
},
isInfinite() {
return (0, exports._Expr)(_expr.isInfinite());
},
isFirstDistinct() {
return (0, exports._Expr)(_expr.isFirstDistinct());
},
isNan() {
return (0, exports._Expr)(_expr.isNan());
},
isNotNan() {
return (0, exports._Expr)(_expr.isNotNan());
},
isNotNull() {
return (0, exports._Expr)(_expr.isNotNull());
},
isNull() {
return (0, exports._Expr)(_expr.isNull());
},
isUnique() {
return (0, exports._Expr)(_expr.isUnique());
},
isIn(other) {
if (Array.isArray(other)) {
other = polars_internal_1.default.lit((0, series_1.Series)(other).inner());
}
else {
other = (0, exports.exprToLitOrExpr)(other, false).inner();
}
return wrap("isIn", other);
},
keepName() {
return (0, exports._Expr)(_expr.keepName());
},
kurtosis(obj, bias = true) {
const fisher = obj?.["fisher"] ?? (typeof obj === "boolean" ? obj : true);
bias = obj?.["bias"] ?? bias;
return (0, exports._Expr)(_expr.kurtosis(fisher, bias));
},
last() {
return (0, exports._Expr)(_expr.last());
},
list() {
return (0, exports._Expr)(_expr.list());
},
log1p() {
console.log(_expr.log1p);
return (0, exports._Expr)(_expr.log1p());
},
log(base) {
return (0, exports._Expr)(_expr.log(base ?? Math.E));
},
lowerBound() {
return (0, exports._Expr)(_expr.lowerBound());
},
peakMax() {
return (0, exports._Expr)(_expr.peakMax());
},
peakMin() {
return (0, exports._Expr)(_expr.peakMin());
},
max() {
return (0, exports._Expr)(_expr.max());
},
mean() {
return (0, exports._Expr)(_expr.mean());
},
median() {
return (0, exports._Expr)(_expr.median());
},
min() {
return (0, exports._Expr)(_expr.min());
},
mode() {
return (0, exports._Expr)(_expr.mode());
},
not() {
return (0, exports._Expr)(_expr.not());
},
nUnique() {
return (0, exports._Expr)(_expr.nUnique());
},
or(other) {
const expr = (0, exports.exprToLitOrExpr)(other).inner();
return (0, exports._Expr)(_expr.or(expr));
},
over(...exprs) {
const partitionBy = (0, utils_1.selectionToExprList)(exprs, false);
return wrap("over", partitionBy);
},
pow(exponent) {
return (0, exports._Expr)(_expr.pow(exponent?.exponent ?? exponent));
},
prefix(prefix) {
return (0, exports._Expr)(_expr.prefix(prefix));
},
quantile(quantile, interpolation = "nearest") {
if (exports.Expr.isExpr(quantile)) {
quantile = quantile._expr;
}
else {
quantile = polars_internal_1.default.lit(quantile);
}
return (0, exports._Expr)(_expr.quantile(quantile, interpolation));
},
rank(method = "average", descending = false) {
return (0, exports._Expr)(_expr.rank(method?.method ?? method, method?.descending ?? descending));
},
reinterpret(signed = true) {
signed = signed?.signed ?? signed;
return (0, exports._Expr)(_expr.reinterpret(signed));
},
repeatBy(expr) {
const e = (0, exports.exprToLitOrExpr)(expr, false)._expr;
return (0, exports._Expr)(_expr.repeatBy(e));
},
replace(old, newValue) {
let oldIn = old;
let newIn = newValue;
if (old && typeof old === "object" && !Array.isArray(old)) {
oldIn = Object.keys(old["old"]);
newIn = Object.values(old["old"]);
}
return (0, exports._Expr)(_expr.replace((0, exports.exprToLitOrExpr)(oldIn)._expr, (0, exports.exprToLitOrExpr)(newIn)._expr));
},
replaceStrict(old, newValue, defaultValue, returnDtype) {
let oldIn = old;
let newIn = newValue;
let defIn = defaultValue;
if (old && typeof old === "object" && !Array.isArray(old)) {
oldIn = Object.keys(old["old"]);
newIn = Object.values(old["old"]);
defIn = old["default_"];
}
return (0, exports._Expr)(_expr.replaceStrict((0, exports.exprToLitOrExpr)(oldIn)._expr, (0, exports.exprToLitOrExpr)(newIn)._expr, defIn ? (0, exports.exprToLitOrExpr)(defIn)._expr : undefined, returnDtype));
},
reverse() {
return (0, exports._Expr)(_expr.reverse());
},
rollingMax: rolling("rollingMax"),
rollingMean: rolling("rollingMean"),
rollingMin: rolling("rollingMin"),
rollingSum: rolling("rollingSum"),
rollingStd: rolling("rollingStd"),
rollingVar: rolling("rollingVar"),
rollingMedian: rolling("rollingMedian"),
rollingQuantile(val, interpolation, windowSize, weights, minPeriods, center, by, closedWindow, warnIfUnsorted) {
if (typeof val === "number") {
return wrap("rollingQuantile", {
windowSize: `${windowSize}i`,
weights,
minPeriods,
center,
});
}
windowSize =
val?.["windowSize"] ?? (typeof val === "number" ? val : null);
if (windowSize === null) {
throw new Error("window size is required");
}
return wrap("rollingQuantile", val.quantile, val.interpolation ?? "nearest", windowSize, val?.["weights"] ?? weights ?? null, val?.["minPeriods"] ?? minPeriods ?? windowSize, val?.["center"] ?? center ?? false, val?.["by"] ?? by, closedWindow, val?.["warnIfUnsorted"] ?? warnIfUnsorted ?? true);
},
rollingSkew(val, bias = true) {
if (typeof val === "number") {
return wrap("rollingSkew", val, bias);
}
return wrap("rollingSkew", val.windowSize, val.bias ?? bias);
},
round(decimals) {
return (0, exports._Expr)(_expr.round(decimals?.decimals ?? decimals));
},
sample(opts, frac, withReplacement = false, seed) {
if (opts?.n !== undefined || opts?.frac !== undefined) {
return this.sample(opts.n, opts.frac, opts.withReplacement, seed);
}
if (typeof opts === "number") {
throw new Error("sample_n is not yet supported for expr");
}
if (typeof frac === "number") {
return wrap("sampleFrac", frac, withReplacement, false, seed);
}
throw new TypeError("must specify either 'frac' or 'n'");
},
shift(periods) {
return (0, exports._Expr)(_expr.shift((0, exports.exprToLitOrExpr)(periods)._expr));
},
shiftAndFill(optOrPeriods, fillValue) {
if (typeof optOrPeriods === "number") {
return wrap("shiftAndFill", optOrPeriods, fillValue);
}
return wrap("shiftAndFill", optOrPeriods.periods, optOrPeriods.fillValue);
},
skew(bias) {
return wrap("skew", bias?.bias ?? bias ?? true);
},
sin() {
return (0, exports._Expr)(_expr.sin());
},
sinh() {
return (0, exports._Expr)(_expr.sinh());
},
slice(arg, len) {
if (typeof arg === "number") {
return wrap("slice", polars_internal_1.default.lit(arg), polars_internal_1.default.lit(len));
}
return wrap("slice", polars_internal_1.default.lit(arg.offset), polars_internal_1.default.lit(arg.length));
},
sort(descending = false, nullsLast = false, maintainOrder = false) {
if (typeof descending === "boolean") {
return wrap("sortWith", descending, nullsLast, false, maintainOrder);
}
return wrap("sortWith", descending?.descending ?? descending?.reverse ?? false, descending?.nullsLast ?? nullsLast, false, descending?.maintainOrder ?? maintainOrder);
},
sortBy(arg, descending = false) {
if (arg?.by !== undefined) {
return this.sortBy(arg.by, arg.descending ?? arg.reverse ?? false);
}
descending = Array.isArray(descending)
? descending.flat()
: [descending];
const by = (0, utils_1.selectionToExprList)(arg, false);
return wrap("sortBy", by, descending);
},
std() {
return (0, exports._Expr)(_expr.std());
},
suffix(suffix) {
return (0, exports._Expr)(_expr.suffix(suffix));
},
sum() {
return (0, exports._Expr)(_expr.sum());
},
tail(length) {
return (0, exports._Expr)(_expr.tail(length));
},
tan() {
return (0, exports._Expr)(_expr.tan());
},
tanh() {
return (0, exports._Expr)(_expr.tanh());
},
unique(opt) {
if (opt || opt?.maintainOrder) {
return wrap("uniqueStable");
}
return wrap("unique");
},
upperBound() {
return (0, exports._Expr)(_expr.upperBound());
},
where(expr) {
return this.filter(expr);
},
var() {
return (0, exports._Expr)(_expr.var());
},
add: wrapExprArg("add"),
sub: wrapExprArg("sub"),
div: wrapExprArg("div"),
mul: wrapExprArg("mul"),
rem: wrapExprArg("rem"),
plus: wrapExprArg("add"),
minus: wrapExprArg("sub"),
divideBy: wrapExprArg("div"),
multiplyBy: wrapExprArg("mul"),
modulo: wrapExprArg("rem"),
eq: wrapExprArg("eq"),
equals: wrapExprArg("eq"),
gtEq: wrapExprArg("gtEq"),
greaterThanEquals: wrapExprArg("gtEq"),
gt: wrapExprArg("gt"),
greaterThan: wrapExprArg("gt"),
ltEq: wrapExprArg("ltEq"),
lessThanEquals: wrapExprArg("ltEq"),
lt: wrapExprArg("lt"),
lessThan: wrapExprArg("lt"),
neq: wrapExprArg("neq"),
notEquals: wrapExprArg("neq"),
};
};
exports._Expr = _Expr;
const isExpr = (anyVal) => {
try {
return anyVal?.[Symbol.toStringTag]?.() === "Expr";
}
catch (err) {
return false;
}
};
const deserialize = (buf, format) => {
return (0, exports._Expr)(polars_internal_1.default.JsExpr.deserialize(buf, format));
};
exports.Expr = Object.assign(exports._Expr, {
isExpr,
deserialize,
});
const exprToLitOrExpr = (expr, stringToLit = true) => {
if ((0, types_1.isRegExp)(expr)) {
return (0, exports._Expr)(polars_internal_1.default.lit((0, utils_1.regexToString)(expr)));
}
if (typeof expr === "string" && !stringToLit) {
return (0, exports._Expr)(polars_internal_1.default.col(expr));
}
if (exports.Expr.isExpr(expr)) {
return expr;
}
if (series_1.Series.isSeries(expr)) {
return (0, exports._Expr)(polars_internal_1.default.lit(expr._s));
}
return (0, exports._Expr)(polars_internal_1.default.lit(expr));
};
exports.exprToLitOrExpr = exprToLitOrExpr;