Skip to content

Commit d19f267

Browse files
authored
Merge pull request #146 from opensource9ja/fix/median-bug
Fix median bug
2 parents 315b6c0 + 14c6f40 commit d19f267

8 files changed

Lines changed: 31 additions & 32 deletions

File tree

danfojs-browser/lib/bundle.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

danfojs-browser/lib/bundle.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

danfojs-browser/src/core/series.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616

1717
import * as tf from "@tensorflow/tfjs";
18-
import { variance, std } from 'mathjs';
18+
import { variance, std, median, mode } from 'mathjs';
1919
import { Utils } from "./utils";
2020
import { Str } from "./strings";
2121
import NDframe from "./generic";
@@ -253,9 +253,9 @@ export class Series extends NDframe {
253253
*/
254254
median() {
255255
utils._throw_str_dtype_error(this, 'median');
256-
let values = this.values;
257-
let median = utils.__median(values, true);
258-
return median;
256+
let values = utils._remove_nans(this.values);
257+
let median_val = median(values);
258+
return median_val;
259259
}
260260

261261

@@ -264,10 +264,10 @@ export class Series extends NDframe {
264264
* @returns {Number}
265265
*/
266266
mode() {
267-
utils._throw_str_dtype_error(this, 'mode');
268-
let values = this.values;
269-
let mode = utils.__mode(values);
270-
return mode;
267+
utils._throw_str_dtype_error(this, 'median');
268+
let values = utils._remove_nans(this.values);
269+
let modal_val = mode(values);
270+
return modal_val;
271271
}
272272

273273

danfojs-browser/tests/core/series.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -337,10 +337,10 @@ describe("Series", function () {
337337
it("Computes the multi-modal values of a Series", function () {
338338
let data1 = [ 30, 40, 3, 5, 5, 5, 5, 5, 3, 3, 3, 21, 3 ];
339339
let sf = new dfd.Series(data1);
340-
assert.deepEqual(sf.mode(), [ 3, 5 ]);
340+
assert.deepEqual(sf.mode(), [ 5, 3 ]);
341341
});
342342
it("Computes the modal value of a Series", function () {
343-
let data1 = [ 30.1, 3.1, 40.2, 3.1, 5.1 ];
343+
let data1 = [ 30.1, 3.1, 40.2, 3.1, 5.1, NaN ];
344344
let sf = new dfd.Series(data1);
345345
assert.deepEqual(sf.mode(), [ 3.1 ]);
346346
});

danfojs-node/dist/core/series.js

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -208,21 +208,19 @@ class Series extends _generic.default {
208208
median() {
209209
utils._throw_str_dtype_error(this, 'median');
210210

211-
let values = this.values;
212-
213-
let median = utils.__median(values, true);
211+
let values = utils._remove_nans(this.values);
214212

215-
return median;
213+
let median_val = (0, _mathjs.median)(values);
214+
return median_val;
216215
}
217216

218217
mode() {
219-
utils._throw_str_dtype_error(this, 'mode');
220-
221-
let values = this.values;
218+
utils._throw_str_dtype_error(this, 'median');
222219

223-
let mode = utils.__mode(values);
220+
let values = utils._remove_nans(this.values);
224221

225-
return mode;
222+
let modal_val = (0, _mathjs.mode)(values);
223+
return modal_val;
226224
}
227225

228226
min() {

danfojs-node/src/core/series.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616

1717
import * as tf from '@tensorflow/tfjs-node';
18-
import { variance, std } from 'mathjs';
18+
import { variance, std, median, mode } from 'mathjs';
1919
import { Utils } from "./utils";
2020
import { Str } from "./strings";
2121
import NDframe from "./generic";
@@ -252,9 +252,9 @@ export class Series extends NDframe {
252252
*/
253253
median() {
254254
utils._throw_str_dtype_error(this, 'median');
255-
let values = this.values;
256-
let median = utils.__median(values, true);
257-
return median;
255+
let values = utils._remove_nans(this.values);
256+
let median_val = median(values);
257+
return median_val;
258258
}
259259

260260

@@ -263,10 +263,10 @@ export class Series extends NDframe {
263263
* @returns {Number}
264264
*/
265265
mode() {
266-
utils._throw_str_dtype_error(this, 'mode');
267-
let values = this.values;
268-
let mode = utils.__mode(values);
269-
return mode;
266+
utils._throw_str_dtype_error(this, 'median');
267+
let values = utils._remove_nans(this.values);
268+
let modal_val = mode(values);
269+
return modal_val;
270270
}
271271

272272

danfojs-node/tests/core/series.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ describe("Series", function () {
310310
assert.deepEqual(sf.median(), 17.5);
311311
});
312312
it("Computes the median value of elements across float Series", function () {
313-
let data1 = [ 30.1, 40.2, 3.1, 5.1 ];
313+
let data1 = [ 30.1, 40.2, 3.1, 5.1, NaN ];
314314
let sf = new Series(data1);
315315
assert.deepEqual(sf.median(), 17.6);
316316
});
@@ -338,7 +338,7 @@ describe("Series", function () {
338338
it("Computes the multi-modal values of a Series", function () {
339339
let data1 = [ 30, 40, 3, 5, 5, 5, 5, 5, 3, 3, 3, 21, 3 ];
340340
let sf = new Series(data1);
341-
assert.deepEqual(sf.mode(), [ 3, 5 ]);
341+
assert.deepEqual(sf.mode(), [ 5, 3 ]);
342342
});
343343
it("Computes the modal value of a Series", function () {
344344
let data1 = [ 30.1, 3.1, 40.2, 3.1, 5.1 ];

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"danfojs-browser/**"
77
],
88
"scripts": {
9-
"build": "cd danfojs-node && yarn build && cd ../danfojs-browser && yarn bundle"
9+
"build": "cd danfojs-node && yarn build && cd ../danfojs-browser && yarn bundle",
10+
"test": "cd danfojs-node && yarn test && cd ../danfojs-browser && yarn test"
1011
}
1112
}

0 commit comments

Comments
 (0)