Skip to content

hygull/node-pandas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

29 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

node-pandas

An npm package that incorporates minimal features of python pandas. Check it on npm at https://www.npmjs.com/package/node-pandas.

npm NPM

You can also have a look at this colorful documentation at https://hygull.github.io/node-pandas/.

Note: Currently, this package is in development. More methods/functions/attributes will be added with time.

For now, you can

  • create Series(using 1D array), DataFrame(using 2D array or file readCsv())
  • view columns, index
  • save DataFrame in a CSV file toCsv()
  • access elements using indices/column names
  • view contents in pretty tabular form on console

Installation

Installation type command
Local npm install node-pandas --save
Local as dev dependency npm install node-pandas --save-dev
Global npm install node-pandas

Table of contents

Series

  1. Example 1 - Creating Series using 1D array/list

DataFrame

  1. Example 1 - Creating DataFrame using 2D array/list

  2. Example 2 - Creating DataFrame using a CSV file

  3. Example 3 - Saving DataFrame in a CSV file


Getting started

Series

Example 1 - Creating Series using 1D array/list

> const pd = require("node-pandas")
undefined
> 
> s = pd.Series([1, 9, 2, 6, 7, -8, 4, -3, 0, 5]) 
NodeSeries [
  1,
  9,
  2,
  6,
  7,
  -8,
  4,
  -3,
  0,
  5,
  _data: [ 1, 9, 2, 6, 7, -8, 4, -3, 0, 5 ] ]
> 
> s.show
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ (index) β”‚ Values β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚    0    β”‚   1    β”‚
β”‚    1    β”‚   9    β”‚
β”‚    2    β”‚   2    β”‚
β”‚    3    β”‚   6    β”‚
β”‚    4    β”‚   7    β”‚
β”‚    5    β”‚   -8   β”‚
β”‚    6    β”‚   4    β”‚
β”‚    7    β”‚   -3   β”‚
β”‚    8    β”‚   0    β”‚
β”‚    9    β”‚   5    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”˜
undefined
> 
> s[0]  // First element in Series
1
> s.length // Total number of elements 
10
> 

DataFrame

Example 1 - Creating DataFrame using 2D array/list

> const pd = require("node-pandas")
undefined
> 
> columns = ['full_name', 'user_id', 'technology']
[ 'full_name', 'user_id', 'technology' ]
> 
> df = pd.DataFrame([
...     ['Guido Van Rossum', 6, 'Python'],
...     ['Ryan Dahl', 5, 'Node.js'],
...     ['Anders Hezlsberg', 7, 'TypeScript'],
...     ['Wes McKinney', 3, 'Pandas'],
...     ['Ken Thompson', 1, 'B language']
... ], columns)
NodeDataFrame {
  columns: [ 'full_name', 'user_id', 'technology' ],
  index: [ 0, 1, 2, 3, 4 ],
  _data:
   [ { full_name: 'Guido Van Rossum',
       user_id: 6,
       technology: 'Python' },
     { full_name: 'Ryan Dahl', user_id: 5, technology: 'Node.js' },
     { full_name: 'Anders Hezlsberg',
       user_id: 7,
       technology: 'TypeScript' },
     { full_name: 'Wes McKinney', user_id: 3, technology: 'Pandas' },
     { full_name: 'Ken Thompson',
       user_id: 1,
       technology: 'B language' } ] }
> 
> df.show
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ (index) β”‚     full_name      β”‚ user_id β”‚  technology  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚    0    β”‚ 'Guido Van Rossum' β”‚    6    β”‚   'Python'   β”‚
β”‚    1    β”‚    'Ryan Dahl'     β”‚    5    β”‚  'Node.js'   β”‚
β”‚    2    β”‚ 'Anders Hezlsberg' β”‚    7    β”‚ 'TypeScript' β”‚
β”‚    3    β”‚   'Wes McKinney'   β”‚    3    β”‚   'Pandas'   β”‚
β”‚    4    β”‚   'Ken Thompson'   β”‚    1    β”‚ 'B language' β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
undefined
> 
> df.index
[ 0, 1, 2, 3, 4 ]
> 
> df.columns
[ 'full_name', 'user_id', 'technology' ]
> 

Example 2 - Creating DataFrame using a CSV file

Note: If CSV will have multiple newlines b/w 2 consecutive rows, no problem, it takes care of it and considers as single newline.

df = pd.readCsv(csvPath) where CsvPath is absolute/relative path of the CSV file.

Examples:

df = pd.readCsv("../node-pandas/docs/csvs/devs.csv")

df = pd.readCsv("/Users/hygull/Projects/NodeJS/node-pandas/docs/csvs/devs.csv")

devs.csv Β» cat /Users/hygull/Projects/NodeJS/node-pandas/docs/csvs/devs.csv

fullName,Profession,Language,DevId
Ken Thompson,C developer,C,1122
Ron Wilson,Ruby developer,Ruby,4433
Jeff Thomas,Java developer,Java,8899


Rishikesh Agrawani,Python developer,Python,6677
Kylie Dwine,C++,C++ Developer,0011

Briella Brown,JavaScript developer,JavaScript,8844

Now have a look the below statements executed on Node REPL.

> const pd = require("node-pandas")
undefined
> 
> df = pd.readCsv("/Users/hygull/Projects/NodeJS/node-pandas/docs/csvs/devs.csv")
NodeDataFrame {
  columns: [ 'fullName', 'Profession', 'Language', 'DevId' ],
  index: [ '0', '1', '2', '3', '4', '5' ],
  _data:
   [ { fullName: 'Ken Thompson',
       Profession: 'C developer',
       Language: 'C',
       DevId: 1122 },
     { fullName: 'Ron Wilson',
       Profession: 'Ruby developer',
       Language: 'Ruby',
       DevId: 4433 },
     { fullName: 'Jeff Thomas',
       Profession: 'Java developer',
       Language: 'Java',
       DevId: 8899 },
     { fullName: 'Rishikesh Agrawani',
       Profession: 'Python developer',
       Language: 'Python',
       DevId: 6677 },
     { fullName: 'Kylie Dwine',
       Profession: 'C++',
       Language: 'C++ Developer',
       DevId: 11 },
     { fullName: 'Briella Brown',
       Profession: 'JavaScript developer',
       Language: 'JavaScript',
       DevId: 8844 } ] }
> 
> df.index
[ '0', '1', '2', '3', '4', '5' ]
> 
> df.columns
[ 'fullName', 'Profession', 'Language', 'DevId' ]
> 
> df.show
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”
β”‚ (index) β”‚       fullName       β”‚       Profession       β”‚    Language     β”‚ DevId β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€
β”‚    0    β”‚    'Ken Thompson'    β”‚     'C developer'      β”‚       'C'       β”‚ 1122  β”‚
β”‚    1    β”‚     'Ron Wilson'     β”‚    'Ruby developer'    β”‚     'Ruby'      β”‚ 4433  β”‚
β”‚    2    β”‚    'Jeff Thomas'     β”‚    'Java developer'    β”‚     'Java'      β”‚ 8899  β”‚
β”‚    3    β”‚ 'Rishikesh Agrawani' β”‚   'Python developer'   β”‚    'Python'     β”‚ 6677  β”‚
β”‚    4    β”‚    'Kylie Dwine'     β”‚         'C++'          β”‚ 'C++ Developer' β”‚  11   β”‚
β”‚    5    β”‚   'Briella Brown'    β”‚ 'JavaScript developer' β”‚  'JavaScript'   β”‚ 8844  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”˜
undefined
> 
> df[0]['fullName']
'Ken Thompson'
> 
> df[3]['Profession']
'Python developer'
> 
> df[5]['Language']
'JavaScript'
> 

Example 3 - Saving DataFrame in a CSV file

Note: Here we will save DataFrame in /Users/hygull/Desktop/newDevs.csv (in this case) which can be different in your case.

> const pd = require("node-pandas")
undefined
> 
> df = pd.readCsv("../node-pandas/docs/csvs/devs.csv")
NodeDataFrame [
  { fullName: 'Ken Thompson',
    Profession: 'C developer',
    Language: 'C',
    DevId: 1122 },
  { fullName: 'Ron Wilson',
    Profession: 'Ruby developer',
    Language: 'Ruby',
    DevId: 4433 },
  { fullName: 'Jeff Thomas',
    Profession: 'Java developer',
    Language: 'Java',
    DevId: 8899 },
  { fullName: 'Rishikesh Agrawani',
    Profession: 'Python developer',
    Language: 'Python',
    DevId: 6677 },
  { fullName: 'Kylie Dwine',
    Profession: 'C++',
    Language: 'C++ Developer',
    DevId: 11 },
  { fullName: 'Briella Brown',
    Profession: 'JavaScript developer',
    Language: 'JavaScript',
    DevId: 8844 },
  columns: [ 'fullName', 'Profession', 'Language', 'DevId' ],
  index: [ '0', '1', '2', '3', '4', '5' ],
  _data: [ { fullName: 'Ken Thompson',
      Profession: 'C developer',
      Language: 'C',
      DevId: 1122 },
    { fullName: 'Ron Wilson',
      Profession: 'Ruby developer',
      Language: 'Ruby',
      DevId: 4433 },
    { fullName: 'Jeff Thomas',
      Profession: 'Java developer',
      Language: 'Java',
      DevId: 8899 },
    { fullName: 'Rishikesh Agrawani',
      Profession: 'Python developer',
      Language: 'Python',
      DevId: 6677 },
    { fullName: 'Kylie Dwine',
      Profession: 'C++',
      Language: 'C++ Developer',
      DevId: 11 },
    { fullName: 'Briella Brown',
      Profession: 'JavaScript developer',
      Language: 'JavaScript',
      DevId: 8844 } ],
  rows: 6,
  cols: 4,
  out: true ]
> 
> df.cols
4
> df.rows
6
> df.columns
[ 'fullName', 'Profession', 'Language', 'DevId' ]
> df.index
[ '0', '1', '2', '3', '4', '5' ]
> 
> df.toCsv("/Users/hygull/Desktop/newDevs.csv")
undefined
> CSV file is successfully created at /Users/hygull/Desktop/newDevs.csv

> 

Let's see content of /Users/hygull/Desktop/newDevs.csv

cat /Users/hygull/Desktop/newDevs.csv

fullName,Profession,Language,DevId
Ken Thompson,C developer,C,1122
Ron Wilson,Ruby developer,Ruby,4433
Jeff Thomas,Java developer,Java,8899
Rishikesh Agrawani,Python developer,Python,6677
Kylie Dwine,C++,C++ Developer,11
Briella Brown,JavaScript developer,JavaScript,8844

References

About

An npm package that incorporates minimal features of python pandas.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published