There are two ways to get danfo.js. We built an optimized and fast version for node.js and its available under the danfojs-node namespace. To install it via npm, you can do the following:
npm install danfojs-node
You can also install and use it in the browsers by using the CDN below:
<script src="https://cdn.jsdelivr.net/npm/danfojs@0.1.2/dist/index.min.js"></script>โ
To play with Danfo.js in a Notebook-like environment without doing an installation, use Dnotebooks hereโ
This is a short introduction to danfo.js, and its flow is adapted from the official 10 minutes to Pandasโ
We will show you how to use danfo.js in both browser environment and Node.js environment. Most functions except plotting which require a DOM works the same way in both environments.
const dfd = require("danfojs-node")
<!DOCTYPE html><html lang="en">โ<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.2/dist/index.min.js"></script><title>Document</title></head>โ<body>โ<script>//danfo is exposed on dfd namespaces = new dfd.Series([1,2,3,4,5])โ</script>โ</body>โ</html>
Creating a Series
by passing a list of values, letting danfo.js create a default integer index:
s = new dfd.Series([1, 3, 5, undefined, 6, 8])s.print()
<!DOCTYPE html><html lang="en">โ<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.2/dist/index.min.js"></script><title>Document</title></head>โ<body>โ<script>โs = new dfd.Series([1, 3, 5, undefined, 6, 8])s.print()โ</script>โ</body>โ</html>
//outputโโโโโคโโโโโโโโโโโโโโโโโโโโโโโโ โ 0 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ 0 โ 1 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ 1 โ 3 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ 2 โ 5 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ 3 โ NaN โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ 4 โ 6 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ 5 โ 8 โโโโโโงโโโโโโโโโโโโโโโโโโโโโโโ
Creating a Series
from a tensor
const dfd = require("danfojs-node")const tf = require("@tensorflow/tfjs-node")โโlet tensor_arr = tf.tensor([12,34,56,2])let s = new dfd.Series(tensor_arr)s.print()โ
<!DOCTYPE html><html lang="en">โ<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.0.1.2/dist/index.min.js"></script><script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest"> </script>โ<title>Document</title></head>โ<body>โ<script>โlet tensor_arr = tf.tensor([12,34,56,2])let s = new dfd.Series(tensor_arr)s.print()โ</script>โ</body>โ</html>
โโโโโคโโโโโโโโโโโโโโโโโโโโโโโโ โ 0 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ 0 โ 12 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ 1 โ 34 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ 2 โ 56 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ 3 โ 2 โโโโโโงโโโโโโโโโโโโโโโโโโโโโโโ
Creating a DataFrame
by passing a JSON object:
const dfd = require("danfojs-node")โโjson_data = [{ A: 0.4612, B: 4.28283, C: -1.509, D: -1.1352 },{ A: 0.5112, B: -0.22863, C: -3.39059, D: 1.1632 },{ A: 0.6911, B: -0.82863, C: -1.5059, D: 2.1352 },{ A: 0.4692, B: -1.28863, C: 4.5059, D: 4.1632 }]โdf = new dfd.DataFrame(json_data)df.print()โ
<!DOCTYPE html><html lang="en">โ<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!--danfojs CDN --><script src="https://cdn.jsdelivr.net/npm/danfojs@0.0.1.2/dist/index.min.js"></script><title>Document</title></head>โ<body>โ<script>โjson_data = [{ A: 0.4612, B: 4.28283, C: -1.509, D: -1.1352 },{ A: 0.5112, B: -0.22863, C: -3.39059, D: 1.1632 },{ A: 0.6911, B: -0.82863, C: -1.5059, D: 2.1352 },{ A: 0.4692, B: -1.28863, C: 4.5059, D: 4.1632 }]โdf = new dfd.DataFrame(json_data)df.print()</script></body>โ</html>โ
Creating a DataFrame
from a 2D tensor
const dfd = require("danfojs-node")const tf = require("@tensorflow/tfjs-node")โโlet tensor_arr = tf.tensor2d([[12, 34, 2.2, 2], [30, 30, 2.1, 7]])let df = new dfd.DataFrame(tensor_arr, {columns: ["A", "B", "C", "D"]})df.print()df.ctypes.print()โ
<!DOCTYPE html><html lang="en">โ<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!--danfojs CDN --><script src="https://cdn.jsdelivr.net/npm/danfojs@0.0.1.2/dist/index.min.js"></script><title>Document</title></head>โ<body>โ<script>โjson_data = [{ A: 0.4612, B: 4.28283, C: -1.509, D: -1.1352 },{ A: 0.5112, B: -0.22863, C: -3.39059, D: 1.1632 },{ A: 0.6911, B: -0.82863, C: -1.5059, D: 2.1352 },{ A: 0.4692, B: -1.28863, C: 4.5059, D: 4.1632 }]โdf = new dfd.DataFrame(json_data)df.print()</script></body>โ</html>โ
โโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ A โ B โ C โ D โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 0 โ 12 โ 34 โ 2.20000004768... โ 2 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ 30 โ 30 โ 2.09999990463... โ 7 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโโโโ โ 0 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ A โ int32 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ B โ int32 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ C โ float32 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ D โ int32 โโโโโโงโโโโโโโโโโโโโโโโโโโโโโโ
Creating a DataFrame
by passing a dictionary of objects with the same length
const dfd = require("danfojs-node")โโdates = new dfd.date_range({ start: '2017-01-01', end: "2020-01-01", period: 4, freq: "Y" })โconsole.log(dates);โobj_data = {'A': dates,'B': ["bval1", "bval2", "bval3", "bval4"],'C': [10, 20, 30, 40],'D': [1.2, 3.45, 60.1, 45],'E': ["test", "train", "test", "train"]}โdf = new dfd.DataFrame(obj_data)df.print()โ
<!DOCTYPE html><html lang="en">โ<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!--danfojs CDN --><script src="https://cdn.jsdelivr.net/npm/danfojs@0.0.1.2/dist/index.min.js"></script><title>Document</title></head>โ<body>โ<script>โdates = new dfd.date_range({ start: '2017-01-01', end: "2020-01-01", period: 4, freq: "Y" })โconsole.log(dates);obj_data = {'A': dates,'B': ["bval1", "bval2", "bval3", "bval4"],'C': [10, 20, 30, 40],'D': [1.2, 3.45, 60.1, 45],'E': ["test", "train", "test", "train"]}df = new dfd.DataFrame(obj_data)df.print()</script></body>โ</html>โ
//output in consoleโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ A โ B โ C โ D โ E โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 0 โ 1/1/2017, 1:0... โ bval1 โ 10 โ 1.2 โ test โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ 1/1/2018, 1:0... โ bval2 โ 20 โ 3.45 โ train โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 2 โ 1/1/2019, 1:0... โ bval3 โ 30 โ 60.1 โ test โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 3 โ 1/1/2020, 1:0... โ bval4 โ 40 โ 45 โ train โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโโ
The columns of the resulting DataFrame
have different dtypes.
df.ctypes.print()
//outputโโโโโคโโโโโโโโโโโโโโโโโโโโโโโโ โ 0 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ A โ string โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ B โ string โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ C โ int32 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ D โ float32 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ E โ string โโโโโโงโโโโโโโโโโโโโโโโโโโโโโโ
Creating a DataFrame
by passing an array of arrays. Index and column labels are automatically generated for you.
const dfd = require("danfojs-node")โarr_data = [["bval1", 10, 1.2, "test"],["bval2", 20, 3.45, "train"],["bval3", 30, 60.1, "train"],["bval4", 35, 3.2, "test"]]โdf = new dfd.DataFrame(arr_data)df.print()
<!DOCTYPE html><html lang="en">โ<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!--danfojs CDN --><script src="https://cdn.jsdelivr.net/npm/danfojs@0.0.1.2/dist/index.min.js"></script><title>Document</title></head>โ<body>โ<script>โarr_data = [["bval1", 10, 1.2, "test"],["bval2", 20, 3.45, "train"],["bval3", 30, 60.1, "train"],["bval4", 35, 3.2, "test"]]โdf = new dfd.DataFrame(arr_data)df.print()</script></body>โ</html>โ
//output in consoleโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ 0 โ 1 โ 2 โ 3 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 0 โ bval1 โ 10 โ 1.2 โ test โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ bval2 โ 20 โ 3.45 โ train โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 2 โ bval3 โ 30 โ 60.1 โ train โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 3 โ bval4 โ 35 โ 3.2 โ test โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโโ
Here is how to view the top and bottom rows of the frame above:
df.head(2).print()df.tail(2).print()
//output from headโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ 0 โ 1 โ 2 โ 3 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 0 โ bval1 โ 10 โ 1.2 โ test โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ bval2 โ 20 โ 3.45 โ train โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโโโ//output from tailโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ 0 โ 1 โ 2 โ 3 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 2 โ bval3 โ 30 โ 60.1 โ train โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 3 โ bval4 โ 35 โ 3.2 โ test โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโ
Display the index, columns:
const dfd = require("danfojs-node")โdates = new dfd.date_range({ start: '2017-01-01', end: "2020-01-01", period: 4, freq: "Y" })โโobj_data = {'A': dates,'B': ["bval1", "bval2", "bval3", "bval4"],'C': [10, 20, 30, 40],'D': [1.2, 3.45, 60.1, 45],'E': ["test", "train", "test", "train"]}โdf = new dfd.DataFrame(obj_data)โconsole.log(df.index);console.log(df.columns);
<!DOCTYPE html><html lang="en">โ<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!--danfojs CDN --><script src="https://cdn.jsdelivr.net/npm/danfojs@0.0.1.2/dist/index.min.js"></script><title>Document</title></head>โ<body>โ<script>โdates = new dfd.date_range({ start: '2017-01-01', end: "2020-01-01", period: 4, freq: "Y" })โโobj_data = {'A': dates,'B': ["bval1", "bval2", "bval3", "bval4"],'C': [10, 20, 30, 40],'D': [1.2, 3.45, 60.1, 45],'E': ["test", "train", "test", "train"]}df = new dfd.DataFrame(obj_data)console.log(df.index);console.log(df.columns);</script></body>โ</html>โ
//output[ 0, 1, 2, 3 ][ 'A', 'B', 'C', 'D', 'E' ]
โDataFrame.tensor
returns a Tensorflow tensor representation of the underlying data. Note that Tensorflow tensors have one dtype for the entire array, while danfo DataFrames have one dtype per column.
For df
, our DataFrame
of all floating-point values, DataFrame.tensor
is fast and doesnโt require copying data.
const dfd = require("danfojs-node")โโjson_data = [{ A: 0.4612, B: 4.28283, C: -1.509, D: -1.1352 },{ A: 0.5112, B: -0.22863, C: -3.39059, D: 1.1632 },{ A: 0.6911, B: -0.82863, C: -1.5059, D: 2.1352 },{ A: 0.4692, B: -1.28863, C: 4.5059, D: 4.1632 }]โdf = new dfd.DataFrame(json_data)โconsole.log(df.tensor);//ordf.tensor.print()
<!DOCTYPE html><html lang="en">โ<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!--danfojs CDN --><script src="https://cdn.jsdelivr.net/npm/danfojs@0.0.1.2/dist/index.min.js"></script><title>Document</title></head>โ<body>โ<script>json_data = [{ A: 0.4612, B: 4.28283, C: -1.509, D: -1.1352 },{ A: 0.5112, B: -0.22863, C: -3.39059, D: 1.1632 },{ A: 0.6911, B: -0.82863, C: -1.5059, D: 2.1352 },{ A: 0.4692, B: -1.28863, C: 4.5059, D: 4.1632 }]df = new dfd.DataFrame(json_data)console.log(df.tensor);//ordf.tensor.print()</script></body>โ</html>โ
//outputโTensor {kept: false,isDisposedInternal: false,shape: [ 4, 4 ],dtype: 'float32',size: 16,strides: [ 4 ],dataId: {},id: 0,rankType: '2'}โTensor[[0.4612, 4.2828302, -1.5089999, -1.1352 ],[0.5112, -0.22863 , -3.39059 , 1.1632 ],[0.6911, -0.82863 , -1.5059 , 2.1352 ],[0.4692, -1.28863 , 4.5058999 , 4.1631999]]
Note
โDataFrame.tensor
does not include the index or column labels in the output.
โdescribe()
shows a quick statistic summary of your data:
const dfd = require("danfojs-node")โโjson_data = [{ A: 0.4612, B: 4.28283, C: -1.509, D: -1.1352 },{ A: 0.5112, B: -0.22863, C: -3.39059, D: 1.1632 },{ A: 0.6911, B: -0.82863, C: -1.5059, D: 2.1352 },{ A: 0.4692, B: -1.28863, C: 4.5059, D: 4.1632 }]โdf = new dfd.DataFrame(json_data)โdf.describe().print()โ
<!DOCTYPE html><html lang="en">โ<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!--danfojs CDN --><script src="https://cdn.jsdelivr.net/npm/danfojs@0.0.1.2/dist/index.min.js"></script><title>Document</title></head>โ<body>โ<script>json_data = [{ A: 0.4612, B: 4.28283, C: -1.509, D: -1.1352 },{ A: 0.5112, B: -0.22863, C: -3.39059, D: 1.1632 },{ A: 0.6911, B: -0.82863, C: -1.5059, D: 2.1352 },{ A: 0.4692, B: -1.28863, C: 4.5059, D: 4.1632 }]df = new dfd.DataFrame(json_data)df.describe().print()</script></body>โ</html>โ
//output in consoleโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ A โ B โ C โ D โโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ count โ 4 โ 4 โ 4 โ 4 โโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ mean โ 0.533175 โ 0.484235 โ -0.474898 โ 1.5816 โโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ std โ 0.107543 โ 2.569317 โ 3.437147 โ 2.200545 โโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ min โ 0.4612 โ -1.28863 โ -3.39059 โ -1.1352 โโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ median โ 0.4902 โ -0.52863 โ -1.50745 โ 1.6492 โโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโ
Sorting by values (Defaults to ascending):
const dfd = require("danfojs")โlet data = [{ "A": [-20, 30, 47.3] },{ "B": [34, -4, 5, 6] },{ "C": [20, 2, 3, 30] }]โโlet df = new dfd.DataFrame(data)df.sort_values({by: "C", inplace: true})df.print()
<!DOCTYPE html><html lang="en">โ<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!--danfojs CDN --><script src="https://cdn.jsdelivr.net/npm/danfojs@0.0.1.2/dist/index.min.js"></script><title>Document</title></head>โ<body>โ<script>let data = [{ "A": [-20, 30, 47.3] },{ "B": [34, -4, 5, 6] },{ "C": [20, 2, 3, 30] }]โโlet df = new dfd.DataFrame(data)df.sort_values({by: "C", inplace: true})df.print()</script></body>โ</html>โ
โโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ A โ B โ C โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 0 โ 30 โ -4 โ 2 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ 47.3 โ 5 โ 3 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 2 โ -20 โ 34 โ 20 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโ
Selecting a single column, which yields a Series
, equivalent to df.A
:
const dfd = require("danfojs-node")โโjson_data = [{ A: 0.4612, B: 4.28283, C: -1.509, D: -1.1352 },{ A: 0.5112, B: -0.22863, C: -3.39059, D: 1.1632 },{ A: 0.6911, B: -0.82863, C: -1.5059, D: 2.1352 },{ A: 0.4692, B: -1.28863, C: 4.5059, D: 4.1632 }]โdf = new dfd.DataFrame(json_data)โdf['A'].print()โ
<!DOCTYPE html><html lang="en">โ<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!--danfojs CDN --><script src="https://cdn.jsdelivr.net/npm/danfojs@0.0.1.2/dist/index.min.js"></script><title>Document</title></head>โ<body>โ<script>json_data = [{ A: 0.4612, B: 4.28283, C: -1.509, D: -1.1352 },{ A: 0.5112, B: -0.22863, C: -3.39059, D: 1.1632 },{ A: 0.6911, B: -0.82863, C: -1.5059, D: 2.1352 },{ A: 0.4692, B: -1.28863, C: 4.5059, D: 4.1632 }]df = new dfd.DataFrame(json_data)df['A'].print()</script></body>โ</html>โ
//outputโโโโโคโโโโโโโโโโโโโโโโโโโโโโโโ โ A โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ 0 โ 0.4612 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ 1 โ 0.5112 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ 2 โ 0.6911 โโโโโโผโโโโโโโโโโโโโโโโโโโโโโโขโ 3 โ 0.4692 โโโโโโงโโโโโโโโโโโโโโโโโโโโโโโ
For getting a cross section using a label:
const dfd = require("danfojs")โlet data = [{ "Name": ["Apples", "Mango", "Banana", "Pear"] },{ "Count": [21, 5, 30, 10] },{ "Price": [200, 300, 40, 250] }]โlet df = new dfd.DataFrame(data, {index: ["a", "b", "c", "d"]})df.print()โlet sub_df = df.loc({rows: ["a", "c"]})sub_df.print()
โโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ Name โ Count โ Price โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ a โ Apples โ 21 โ 200 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ b โ Mango โ 5 โ 300 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ c โ Banana โ 30 โ 40 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ d โ Pear โ 10 โ 250 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโโโShape: (2,3)โโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ Name โ Count โ Price โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ a โ Apples โ 21 โ 200 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ c โ Banana โ 30 โ 40 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโ
Selecting on a multi-axis by label:
const dfd = require("danfojs-node")โlet data = { "Name": ["Apples", "Mango", "Banana", "Pear"] ,"Count": [21, 5, 30, 10],"Price": [200, 300, 40, 250] }โlet df = new dfd.DataFrame(data)df.print()โlet sub_df = df.loc({ rows: [0,1], columns: ["Name", "Price"] })sub_df.print()โ
โโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ Name โ Count โ Price โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 0 โ Apples โ 21 โ 200 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ Mango โ 5 โ 300 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 2 โ Banana โ 30 โ 40 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 3 โ Pear โ 10 โ 250 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโโโShape: (2,2)โโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ Name โ Price โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 0 โ Apples โ 200 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ Mango โ 300 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโ
Showing label slicing, both endpoints are included:
const dfd = require("danfojs-node")โlet data = { "Name": ["Apples", "Mango", "Banana", "Pear"] ,"Count": [21, 5, 30, 10],"Price": [200, 300, 40, 250] }โlet df = new dfd.DataFrame(data)df.print()โlet sub_df = df.loc({ rows: ["0:2"], columns: ["Name", "Price"] })sub_df.print()โ
//before slicingโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ Name โ Count โ Price โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 0 โ Apples โ 21 โ 200 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ Mango โ 5 โ 300 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 2 โ Banana โ 30 โ 40 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 3 โ Pear โ 10 โ 250 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโโ//after slicingShape: (3,2)โโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ Name โ Price โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 0 โ Apples โ 200 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ Mango โ 300 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 2 โ Banana โ 40 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโ
Select via the position of the passed integers:
const dfd = require("danfojs-node")โlet data = { "Name": ["Apples", "Mango", "Banana", "Pear"] ,"Count": [21, 5, 30, 10] ,"Price": [200, 300, 40, 250] }โlet df = new dfd.DataFrame(data)โlet sub_df = df.iloc({rows: [1,3]})sub_df.print()โ
โโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ Name โ Count โ Price โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ Mango โ 5 โ 300 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 3 โ Pear โ 10 โ 250 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโ
By integer slices:
const dfd = require("danfojs-node")โlet data = { "Name": ["Apples", "Mango", "Banana", "Pear"] ,"Count": [21, 5, 30, 10] ,"Price": [200, 300, 40, 250] }โlet df = new dfd.DataFrame(data)โlet sub_df = df.iloc({rows: ["1:3"]})sub_df.print()
โโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ Name โ Count โ Price โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ Mango โ 5 โ 300 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 2 โ Banana โ 30 โ 40 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 3 โ Pear โ 10 โ 250 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโ
By lists of integer position locations:
const dfd = require("danfojs-node")โlet data = { "Name": ["Apples", "Mango", "Banana", "Pear"] ,"Count": [21, 5, 30, 10] ,"Price": [200, 300, 40, 250] }โlet df = new dfd.DataFrame(data)โlet sub_df = df.iloc({rows: [1,3], columns: [0,2]})sub_df.print()โ
โโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ Name โ Price โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ Mango โ 300 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 3 โ Pear โ 250 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโ
For slicing rows explicitly:
const dfd = require("danfojs-node")โlet data = { "Name": ["Apples", "Mango", "Banana", "Pear"] ,"Count": [21, 5, 30, 10] ,"Price": [200, 300, 40, 250] }โlet df = new dfd.DataFrame(data)โlet sub_df = df.iloc({rows: ["2:3"], columns: [":"]})sub_df.print()
โโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ Name โ Count โ Price โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 2 โ Banana โ 30 โ 40 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 3 โ Pear โ 10 โ 250 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโ
For slicing columns explicitly:
const dfd = require("danfojs-node")โlet data = { "Name": ["Apples", "Mango", "Banana", "Pear"] ,"Count": [21, 5, 30, 10] ,"Price": [200, 300, 40, 250] }โlet df = new dfd.DataFrame(data)โlet sub_df = df.iloc({rows: [":"], columns: ["1:2"]})sub_df.print()โ
โโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ Count โ Price โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 0 โ 21 โ 200 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ 5 โ 300 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 2 โ 30 โ 40 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 3 โ 10 โ 250 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโ
Using a single columnโs values to select data.
const dfd = require("danfojs-node")โlet data = [[1, 2, 3], [4, 5, 6], [20, 30, 40], [39, 89, 78]]let cols = ["A", "B", "C"]โlet df = new dfd.DataFrame(data, { columns: cols })df.print() //before queryโlet query_df = df.query({ "column": "B", "is": ">", "to": 5 })query_df.print() //after query
<!DOCTYPE html><html lang="en">โ<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!--danfojs CDN --><script src="https://cdn.jsdelivr.net/npm/danfojs@0.0.1.1/dist/index.min.js"></script><title>Document</title></head>โ<body>โ<script>let data = [[1, 2, 3], [4, 5, 6], [20, 30, 40], [39, 89, 78]]let cols = ["A", "B", "C"]let df = new dfd.DataFrame(data, { columns: cols })df.print() //before querylet query_df = df.query({ "column": "B", "is": ">", "to": 5 })query_df.print() //after query</script></body>โ</html>โ
//before queryโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ A โ B โ C โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 0 โ 1 โ 2 โ 3 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ 4 โ 5 โ 6 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 2 โ 20 โ 30 โ 40 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 3 โ 39 โ 89 โ 78 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโโ//after queryโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ A โ B โ C โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 2 โ 20 โ 30 โ 40 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 3 โ 39 โ 89 โ 78 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโ
Selecting values from a DataFrame works on string columns:
let data = [{"A": ["Ng", "Yu", "Mo", "Ng"]},{"B": [34, 4, 5, 6]},{"C": [20, 20, 30, 40]}]let df = new dfd.DataFrame(data)โdf.print()โlet query_df = df.query({ column: "A", is: "==", to: "Ng"})query_df.print() //after queryโ
โโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ A โ B โ C โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 0 โ Ng โ 34 โ 20 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 1 โ Yu โ 4 โ 20 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 2 โ Mo โ 5 โ 30 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 3 โ Ng โ 6 โ 40 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโโ//after queryโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโโ โ A โ B โ C โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 0 โ Ng โ 34 โ 20 โโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโขโ 3 โ Ng โ 6 โ 40 โโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโ
Setting a new column automatically aligns the data by the indexes.
const dfd = require("danfojs-node")โlet data = { "A": [30, 1, 2, 3] ,"B": [34, 4, 5, 6] ,"C": [20, 20, 30, 40] }โlet df = new dfd.DataFrame(data)df.print()โlet new_col = [1, 2, 3, 4]df.addColumn({ "column": "D", "value": new_col }); //happens inplaceโdf.print()
<!DOCTYPE html><html lang="en">โ<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!--danfojs CDN --><script src="https://cdn.jsdelivr.net/npm/danfojs@0.0.1.1/dist/index.min.js"></script><title>Document</title></head>โ<body>โ<script>let data = { "A": [30, 1, 2, 3] ,