UNPKG

dataframe-js

Version:

Immutable and functional data structure for datascientists and developpers

112 lines (97 loc) 3.81 kB
"use strict"; exports.__esModule = true; var _isNan = require("babel-runtime/core-js/number/is-nan"); var _isNan2 = _interopRequireDefault(_isNan); var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require("babel-runtime/helpers/createClass"); var _createClass3 = _interopRequireDefault(_createClass2); var _reusables = require("../reusables"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var Stat = function () { function Stat(df) { (0, _classCallCheck3["default"])(this, Stat); this.df = df; this.name = "stat"; } (0, _createClass3["default"])(Stat, [{ key: "_castAsNumber", value: function _castAsNumber(columnName) { return this.df.withColumn(columnName, function (row) { return Number(row.get(columnName)); }).filter(function (row) { return !(0, _isNan2["default"])(row.get(columnName)); }); } }, { key: "sum", value: function sum(columnName) { return Number(this.df.reduce(function (p, n) { return (0, _reusables.isNumber)(n.get(columnName)) ? p + Number(n.get(columnName)) : p; }, 0)); } }, { key: "max", value: function max(columnName) { return this._castAsNumber(columnName).reduce(function (p, n) { return n.get(columnName) > p.get(columnName) ? n : p; }).get(columnName); } }, { key: "min", value: function min(columnName) { return this._castAsNumber(columnName).reduce(function (p, n) { return p.get(columnName) > n.get(columnName) ? n : p; }).get(columnName); } }, { key: "mean", value: function mean(columnName) { var numericDF = this.df.filter(function (row) { return (0, _reusables.isNumber)(row.get(columnName)); }); return Number(numericDF.reduce(function (p, n) { return (0, _reusables.isNumber)(n.get(columnName)) ? p + Number(n.get(columnName)) : p; }, 0)) / numericDF.count(); } }, { key: "average", value: function average(columnName) { return this.mean(columnName); } }, { key: "var", value: function _var(columnName) { var population = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var numericDF = this.df.filter(function (row) { return (0, _reusables.isNumber)(row.get(columnName)); }); var mean = this.mean(columnName); return Number(numericDF.reduce(function (p, n) { return p + Math.pow(n.get(columnName) - mean, 2); }, 0)) / (numericDF.count() - (population ? 0 : 1)); } }, { key: "sd", value: function sd(columnName) { var population = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; return Math.sqrt(this["var"](columnName, population)); } }, { key: "stats", value: function stats(columnName) { return { sum: this.sum(columnName), mean: this.mean(columnName), min: this.min(columnName), max: this.max(columnName), "var": this["var"](columnName), varpop: this["var"](columnName, true), sd: this.sd(columnName), sdpop: this.sd(columnName, true) }; } }]); return Stat; }(); exports["default"] = Stat;