Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
2397589
fix query function to update index
risenW Aug 6, 2020
b270c92
fix query function to work on string columns
risenW Aug 6, 2020
ccfdeae
fix query to throw error on wrong value
risenW Aug 6, 2020
0557488
update error message in query
risenW Aug 6, 2020
10a866a
Merge branch 'master' of https://github.com/opensource9ja/danfojs
risenW Aug 6, 2020
dd860c2
Merge branch 'master' of https://github.com/opensource9ja/danfojs
risenW Aug 6, 2020
5438132
fix bug in count function
risenW Aug 6, 2020
4ff9836
update logo
risenW Aug 7, 2020
84559a6
Merge branch 'master' of https://github.com/opensource9ja/danfojs
risenW Aug 7, 2020
3ba16fc
add licence
risenW Aug 7, 2020
711997b
fix lint error
risenW Aug 7, 2020
53c4910
0.0.2
risenW Aug 7, 2020
39bc730
update package name
risenW Aug 7, 2020
61912c6
change tensorflow version
risenW Aug 7, 2020
69907c4
build with webpack
risenW Aug 7, 2020
140069d
update scripts
risenW Aug 7, 2020
b23c30f
[branch]: Set up new branch for browser development
risenW Jan 24, 2021
b193be8
[testrunner]: Set up karma for browser side tests
risenW Jan 24, 2021
014c39c
Update exported classes
risenW Jan 24, 2021
95ec8af
Use smaller tfjs-core instead of tfjs
risenW Jan 24, 2021
85ee67d
Update tests to work in browser
risenW Jan 24, 2021
e343b18
Build bundle for web
risenW Jan 24, 2021
3531a39
Use tfjs build for browser side
risenW Jan 24, 2021
fac0647
bundle files for browser env
risenW Jan 24, 2021
451275f
Update version number in ReadMe
risenW Jan 24, 2021
4fdcb87
0.1.6
risenW Jan 24, 2021
05b289b
Remove useless devdependency
risenW Jan 24, 2021
43780be
Update CDN link and version number
risenW Jan 24, 2021
9be2946
fIX lint warning in test files
risenW Jan 24, 2021
75282df
updata version number
risenW Jan 24, 2021
518d9b2
Fix merge error in utils
risenW Jan 24, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .babelrc
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@
}
}
]
]
],
"plugins": ["@babel/plugin-transform-runtime"]
}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@ coverage
danfojs/data
.DS_Store
.idea/

dist/
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ easy and intuitive. It is heavily inspired by [Pandas](https://pandas.pydata.org
To use Danfo.js via script tags, copy and paste the CDN below to your HTML file

```html
<script src="https://cdn.jsdelivr.net/npm/danfojs@0.1.5/dist/index.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/opensource9ja/danfojs@0.2.1/lib/bundle.js"></script>
```

### Example Usage in the Browser
Expand All @@ -64,7 +64,7 @@ To use Danfo.js via script tags, copy and paste the CDN below to your HTML file
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdn.jsdelivr.net/npm/danfojs@0.1.5/dist/index.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/opensource9ja/danfojs@0.2.1/lib/bundle.js"></script>
<title>Document</title>
</head>

Expand Down
1 change: 0 additions & 1 deletion danfojs/src/core/concat.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { DataFrame } from './frame';
// import { Series } from "../../src/core/series";
import { Utils } from "./utils";
import { Series } from './series';

Expand Down
3 changes: 1 addition & 2 deletions danfojs/src/core/frame.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@
* limitations under the License.
*/

import * as tf from '@tensorflow/tfjs-node'; //Use this import when building optimized version for danfojs-node
// import * as tf from "@tensorflow/tfjs"; //Use this import when building optimized version for danfojs browser side
import * as tf from "@tensorflow/tfjs";
import Ndframe from "./generic";
import { Series } from "./series";
import { Utils } from "./utils";
Expand Down
14 changes: 11 additions & 3 deletions danfojs/src/core/generic.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@
*
*/

import * as tf from '@tensorflow/tfjs-node'; //Use this import when building optimized version for danfojs-node
// import * as tf from "@tensorflow/tfjs"; //Use this import when building optimized version for danfojs browser side
import * as tf from "@tensorflow/tfjs";
import { table } from "table";
import { Utils } from "./utils";
import { Configs } from "../config/config";


const utils = new Utils();
const config = new Configs(); //package wide configuration object

const _VERSION = "0.1.5";
export default class NDframe {
/**
* N-Dimensiona data structure. Stores multi-dimensional
Expand Down Expand Up @@ -264,6 +264,14 @@ export default class NDframe {
return this.index_arr;
}

/**
* Returns current version
* @return {String} version of danfojs
*/
get __version() {
return _VERSION;
}

/**
* Sets index of the NDFrame
*/
Expand Down
1 change: 0 additions & 1 deletion danfojs/src/core/get_dummies.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// import { Series } from "./series"
import { DataFrame } from "./frame";
import { Utils } from "./utils";

Expand Down
3 changes: 1 addition & 2 deletions danfojs/src/core/series.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@
*/


import * as tf from '@tensorflow/tfjs-node'; //Use this import when building optimized version for danfojs-node
// import * as tf from '@tensorflow/tfjs'; //Use this import when building optimized version for danfojs browser sideimport { std, variance } from 'mathjs'
import * as tf from "@tensorflow/tfjs";
import { variance, std } from 'mathjs';
import { Utils } from "./utils";
import { Str } from "./strings";
Expand Down
4 changes: 0 additions & 4 deletions danfojs/src/core/strings.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
//handled string columns in Series and DataFrame
import { Series } from "./series";
// import {Utils} from "./utils"

// const utils = new Utils()

/**
* String methods applied on Series and DataFrames
Expand Down
4 changes: 2 additions & 2 deletions danfojs/src/core/utils.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as tf from '@tensorflow/tfjs-node';
// import * as tf from "@tensorflow/tfjs";
import * as tf from "@tensorflow/tfjs";
import '@tensorflow/tfjs-backend-cpu';
import { Configs } from "../config/config";

const config = new Configs();
Expand Down
26 changes: 16 additions & 10 deletions danfojs/src/index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
export { Series } from './core/series';
export { DataFrame } from './core/frame';
export { to_datetime } from './core/timeseries';
export { read_csv, read_json, read_excel, read } from './io/reader';
export { merge } from './core/merge';
export { concat } from './core/concat';
export { LabelEncoder, OneHotEncoder } from './preprocessing/encodings'; //TODO Create js file to expose functions
export { MinMaxScaler, StandardScaler } from './preprocessing/scalers';
export { date_range } from './core/date_range';
export { get_dummies } from './core/get_dummies';
import NDframe from "./core/generic";

export { Series } from "./core/series";
export { DataFrame } from "./core/frame";
export { to_datetime } from "./core/timeseries";
export { read_csv, read_json, read_excel, read } from "./io/reader";
export { merge } from "./core/merge";
export { concat } from "./core/concat";
export { LabelEncoder, OneHotEncoder } from "./preprocessing/encodings";
export { MinMaxScaler, StandardScaler } from "./preprocessing/scalers";
export { date_range } from "./core/date_range";
export { get_dummies } from "./core/get_dummies";
export { Configs } from "./config/config";
export { NDframe };
export { Str } from "./core/strings";
export { Utils } from "./core/utils";
7 changes: 3 additions & 4 deletions danfojs/src/io/reader.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { DataFrame } from "../core/frame";
import * as tf from '@tensorflow/tfjs-node';
// import * as tf from "@tensorflow/tfjs";
import { Utils } from "../core/utils";
import * as tf from "@tensorflow/tfjs";
import fetch from "node-fetch";
import XLSX from "xlsx";
import { open, Dataset, isDataset } from "frictionless.js";
import toArray from "stream-to-array";
import { Utils } from "../core/utils";
import { DataFrame } from "../core/frame";

const utils = new Utils();

Expand Down
2 changes: 1 addition & 1 deletion danfojs/src/plotting/plot.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// import { newPlot } from 'plotly.js'; //comment out when building for Node Version
import { newPlot } from 'plotly.js';
import { Utils } from "../core/utils";
import { Series } from "../core/series";

Expand Down
4 changes: 1 addition & 3 deletions danfojs/src/preprocessing/scalers.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import * as tf from '@tensorflow/tfjs-node';
// import * as tf from "@tensorflow/tfjs";
import * as tf from "@tensorflow/tfjs";
import { Series } from "../core/series";
import { DataFrame } from "../core/frame";
import { Utils } from "../core/utils";
// import { std } from "mathjs";

const utils = new Utils();

Expand Down
7 changes: 2 additions & 5 deletions danfojs/tests/config/config.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
import { Configs } from '../../src/config/config';
import { assert } from 'chai';

const config = new Configs();

/* eslint-disable no-undef */
const config = new dfd.Configs();

describe("Config", function () {
it("gets the default config val for table width", function () {
Expand Down
65 changes: 30 additions & 35 deletions danfojs/tests/core/concat.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,20 @@
import { assert } from "chai";
import { DataFrame } from '../../src/core/frame';
import { concat } from '../../src/core/concat';
import { Series } from "../../src/core/series";


describe("Concatenate", function () {

it("Check the axis 0 concatenation", function () {
let data = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 20, 30, 40 ], [ 39, 89, 78 ] ];
let cols = [ "A", "B", "C" ];
let df = new DataFrame(data, { columns: cols });
let df = new dfd.DataFrame(data, { columns: cols });

let data1 = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 20, 30, 40 ], [ 39, 89, 78 ] ];
let cols1 = [ "A", "B", "C" ];
let df1 = new DataFrame(data1, { columns: cols1 });
let df1 = new dfd.DataFrame(data1, { columns: cols1 });

let data2 = [ [ 1, 2, 3, 5 ], [ 4, 5, 6, 8 ], [ 20, 30, 40, 10 ] ];
let cols2 = [ "A", "B", "C", "D" ];
let df2 = new DataFrame(data2, { columns: cols2 });
let df2 = new dfd.DataFrame(data2, { columns: cols2 });

let new_df = concat({ "df_list": [ df, df1, df2 ], "axis": 0 });
let new_df = dfd.concat({ "df_list": [ df, df1, df2 ], "axis": 0 });

let data_values = [ [ 1, 2, 3, NaN ], [ 4, 5, 6, NaN ], [ 20, 30, 40, NaN ], [ 39, 89, 78, NaN ],
[ 1, 2, 3, NaN ], [ 4, 5, 6, NaN ], [ 20, 30, 40, NaN ], [ 39, 89, 78, NaN ],
Expand All @@ -31,35 +26,35 @@ describe("Concatenate", function () {
it("Check the axis 1 concatenation", function () {
let data = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 20, 30, 40 ], [ 39, 89, 78 ] ];
let cols = [ "A", "B", "C" ];
let df = new DataFrame(data, { columns: cols });
let df = new dfd.DataFrame(data, { columns: cols });

let data1 = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 20, 30, 40 ], [ 39, 89, 78 ] ];
let cols1 = [ "A", "B", "C" ];
let df1 = new DataFrame(data1, { columns: cols1 });
let df1 = new dfd.DataFrame(data1, { columns: cols1 });

let data2 = [ [ 1, 2, 3, 5 ], [ 4, 5, 6, 8 ], [ 20, 30, 40, 10 ] ];
let cols2 = [ "A", "B", "C", "D" ];
let df2 = new DataFrame(data2, { columns: cols2 });
let df2 = new dfd.DataFrame(data2, { columns: cols2 });

let new_df = concat({ "df_list": [ df, df1, df2 ], "axis": 1 });
let new_df = dfd.concat({ "df_list": [ df, df1, df2 ], "axis": 1 });

let data_values = [ [ 1, 2, 3, 1, 2, 3, 1, 2, 3, 5 ], [ 4, 5, 6, 4, 5, 6, 4, 5, 6, 8 ],
[ 20, 30, 40, 20, 30, 40, 20, 30, 40, 10 ], [ 39, 89, 78, 39, 89, 78, NaN,
NaN, NaN, NaN ] ];
assert.deepEqual(new_df.values, data_values);
});

it("concatenate dataframe and series along 0 axis", function(){
it("concatenate dfd.dataframe and series along 0 axis", function(){

let data1 = [ 1, 2, 3, 4 ];
let data2 = [ 3, 4, 5, 6 ];

let data = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 20, 30, 40 ], [ 39, 89, 78 ] ];
let cols = [ "A", "B", "C" ];
let df = new DataFrame(data, { columns: cols });
let df = new dfd.DataFrame(data, { columns: cols });

let s1 = new Series(data1);
let s2 = new Series(data2);
let s1 = new dfd.Series(data1);
let s2 = new dfd.Series(data2);
let rslt = [
[ 1, 2, 3, NaN ],
[ 4, 5, 6, NaN ],
Expand All @@ -72,20 +67,20 @@ describe("Concatenate", function () {
];


let con = concat({ "df_list": [ df, s1 ], "axis": 0 });
let con = dfd.concat({ "df_list": [ df, s1 ], "axis": 0 });

assert.deepEqual(con.values, rslt);

});

it("concatenate dataframe and series along axis 1", function(){
it("concatenate dfd.dataframe and series along axis 1", function(){

let data = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 20, 30, 40 ], [ 39, 89, 78 ] ];
let cols = [ "A", "B", "C" ];
let df = new DataFrame(data, { columns: cols });
let df = new dfd.DataFrame(data, { columns: cols });

let data1 = [ 1, 2, 3, 4 ];
let s1 = new Series(data1);
let s1 = new dfd.Series(data1);
let rslt = [
[ 1, 2, 3, 1 ],
[ 4, 5, 6, 2 ],
Expand All @@ -94,7 +89,7 @@ describe("Concatenate", function () {
];


let con = concat({ "df_list": [ df, s1 ], "axis": 1 });
let con = dfd.concat({ "df_list": [ df, s1 ], "axis": 1 });

assert.deepEqual(con.values, rslt);

Expand All @@ -104,12 +99,12 @@ describe("Concatenate", function () {
let data1 = [ 1, 2, 3, 4 ];
let data2 = [ 3, 4, 5, 6 ];

let s1 = new Series(data1);
let s2 = new Series(data2);
let s1 = new dfd.Series(data1);
let s2 = new dfd.Series(data2);
let rslt = [ [ 1, 3 ], [ 2, 4 ], [ 3, 5 ], [ 4, 6 ] ];


let con = concat({ "df_list": [ s1, s2 ], "axis": 1 });
let con = dfd.concat({ "df_list": [ s1, s2 ], "axis": 1 });

assert.deepEqual(con.values, rslt);

Expand All @@ -119,45 +114,45 @@ describe("Concatenate", function () {
let data1 = [ 1, 2, 3, 4 ];
let data2 = [ 3, 4, 5, 6 ];

let s1 = new Series(data1);
let s2 = new Series(data2);
let s1 = new dfd.Series(data1);
let s2 = new dfd.Series(data2);
let rslt = [
1, 2, 3, 4,
3, 4, 5, 6
];

let con = concat({ "df_list": [ s1, s2 ], "axis": 0 });
let con = dfd.concat({ "df_list": [ s1, s2 ], "axis": 0 });

assert.deepEqual(con.values, rslt);

});

it("test if df_list is an array", function(){

assert.throws(function () { concat({ "df_list":23, "axis":0 }); }, Error, 'df_list must be an Array of dataFrames/Series');
assert.throws(function () { dfd.concat({ "df_list":23, "axis":0 }); }, Error, 'df_list must be an Array of dataFrames/Series');

});
it("assign default axis for concating", function(){
let data1 = [ 1, 2, 3, 4 ];
let data2 = [ 3, 4, 5, 6 ];

let s1 = new Series(data1);
let s2 = new Series(data2);
let s1 = new dfd.Series(data1);
let s2 = new dfd.Series(data2);
let rslt = [ [ 1, 3 ], [ 2, 4 ], [ 3, 5 ], [ 4, 6 ] ];


let con = concat({ "df_list": [ s1, s2 ], "axis": 12 });
let con = dfd.concat({ "df_list": [ s1, s2 ], "axis": 12 });

assert.deepEqual(con.values, rslt);
});
it("ensure axis is a number", function(){
let data1 = [ 1, 2, 3, 4 ];
let data2 = [ 3, 4, 5, 6 ];

let s1 = new Series(data1);
let s2 = new Series(data2);
let s1 = new dfd.Series(data1);
let s2 = new dfd.Series(data2);

assert.throws(function () { concat({ "df_list":[ s1, s2 ], "axis":"r" }); }, Error, 'axis must be a number');
assert.throws(function () { dfd.concat({ "df_list":[ s1, s2 ], "axis":"r" }); }, Error, 'axis must be a number');
});

});
Loading