cheap-pandas
Version:
Not a good pandas library to use
107 lines (88 loc) • 2.63 kB
JavaScript
exports.toFixed4Digit = (item) => {
return item.toFixed(4).replace(/(\.0+$)|(0+$)/g, "");
};
exports.takeNSpace = (item = "", num) => {
if (typeof item === "number") item = exports.toFixed4Digit(item);
if (item.length + 2 > num) {
item = item.substring(0, num - 2);
}
return `|${" ".repeat(
Math.floor((num - item.length) / 2)
)}${item}${" ".repeat(Math.ceil((num - item.length) / 2))}`;
};
exports.sqrt = (a) => Math.sqrt(a);
exports.sq = (a) => Math.pow(a, 2);
exports.pow = (a, b) => Math.pow(a, b);
exports.getRange = (a, b) => [a - b, a + b];
exports.mean = (arr) => arr.reduce((prev, curr) => prev + curr, 0) / arr.length;
exports.variance = (arr) => {
let mean = exports.mean(arr);
let cum = 0;
for (let i = 0; i < arr.length; i++) {
cum += exports.sq(arr[i] - mean);
}
return cum / (arr.length - 1);
};
exports.std = (arr) => Math.sqrt(exports.variance(arr));
exports.div = (a, b, fn) => {
if (typeof a === "number" && typeof b === "number") {
return a / b;
}
if (Array.isArray(a) && Array.isArray(b)) {
if (a.length !== b.length) throw new Error("Their length must be the same");
let divided_array = [];
if (fn) {
for (let i = 0; i < a.length; i++) {
divided_array[i] = fn(a[i] / b[i]);
}
} else {
for (let i = 0; i < a.length; i++) {
divided_array[i] = a[i] / b[i];
}
}
return divided_array;
}
return null;
};
exports.combination = (n, k) => {
let mul = 1;
for (let i = n; i > k; i--) {
mul *= i;
}
let other = n - k;
for (let i = other; i >= 1; i--) {
mul /= i;
}
return mul;
};
exports.binomial = (n, t, p) =>
exports.combination(n, t) * Math.pow(p, t) * Math.pow(1 - p, n - t);
exports.log = (base, argument) => {
if (typeof argument === "undefined") {
return Math.log(base);
}
return Math.log(argument) / Math.log(base);
};
exports.sum = (arr) => {
return arr.reduce((prev, curr) => prev + curr, 0);
};
exports.sub = (a, b, fn) => {
if (typeof a === "number" && typeof b === "number") {
return a - b;
}
if (Array.isArray(a) && Array.isArray(b)) {
if (a.length !== b.length) throw new Error("Their length must be the same");
let subtracted_array = [];
if (fn) {
for (let i = 0; i < a.length; i++) {
subtracted_array[i] = fn(a[i] - b[i]);
}
} else {
for (let i = 0; i < a.length; i++) {
subtracted_array[i] = a[i] - b[i];
}
}
return subtracted_array;
}
return null;
};