node-pandas
An npm package that incorporates minimal features of python pandas. Check it on npm at https://www.npmjs.com/package/node-pandas.
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()
)- access Series object using exactly an array like syntax (indexing, looping etc.)
- view columns, index
- save DataFrame in a CSV file
toCsv()
- access elements using indices/column names
- view contents in pretty tabular form on console
- access DataFrame's columns using column names
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
DataFrame
-
Example 4 - Accessing columns (Retrieving columns using column name) -
df.fullName -> ["R A", "B R", "P K"]
Getting started
Series
Example 1 - Creating Series using 1D array/list
> const pd = undefined> > s = pd NodeSeries 1 9 2 6 7 -8 4 -3 0 5> > sshow┌─────────┬────────┐│ index │ Values │├─────────┼────────┤│ 0 │ 1 ││ 1 │ 9 ││ 2 │ 2 ││ 3 │ 6 ││ 4 │ 7 ││ 5 │ -8 ││ 6 │ 4 ││ 7 │ -3 ││ 8 │ 0 ││ 9 │ 5 │└─────────┴────────┘undefined> > s0 // First element in Series1> slength // Total number of elements 10>
DataFrame
Example 1 - Creating DataFrame using 2D array/list
> const pd = undefined> > columns = 'full_name' 'user_id' 'technology' 'full_name' 'user_id' 'technology' > > df = pdNodeDataFrame 'Guido Van Rossum' 6 'Python' 'Ryan Dahl' 5 'Node.js' 'Anders Hezlsberg' 7 'TypeScript' 'Wes McKinney' 3 'Pandas' 'Ken Thompson' 1 'B language' columns: 'full_name' 'user_id' 'technology' index: 0 1 2 3 4 rows: 5 cols: 3 out: true> > dfshow┌─────────┬────────────────────┬─────────┬──────────────┐│ 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> > dfindex 0 1 2 3 4 > > dfcolumns '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)
whereCsvPath
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,DevIdKen Thompson,C developer,C,1122Ron Wilson,Ruby developer,Ruby,4433Jeff Thomas,Java developer,Java,8899 Rishikesh Agrawani,Python developer,Python,6677Kylie Dwine,C++,C++ Developer,0011 Briella Brown,JavaScript developer,JavaScript,8844
Now have a look the below statements executed on Node REPL.
> const pd = undefined> > df = pdNodeDataFrame 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: 'JavaScirpt developer' Language: 'JavaScript' DevId: 8844 columns: 'fullName' 'Profession' 'Language' 'DevId' index: 0 1 2 3 4 5 rows: 6 cols: 4 out: true> > dfindex 0 1 2 3 4 5 > > dfcolumns 'fullName' 'Profession' 'Language' 'DevId' > > dfshow┌─────────┬──────────────────────┬────────────────────────┬─────────────────┬───────┐│ 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>
> df0'fullName''Ken Thompson'> > df3'Profession''Python developer'> > df5'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 = undefined> > df = pdNodeDataFrame 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: 'JavaScirpt developer' Language: 'JavaScript' DevId: 8844 columns: 'fullName' 'Profession' 'Language' 'DevId' index: 0 1 2 3 4 5 rows: 6 cols: 4 out: true> > dfcols4> dfrows6> dfcolumns 'fullName' 'Profession' 'Language' 'DevId' > dfindex 0 1 2 3 4 5 > > dfundefined> CSV file is successfully created at /Users/hygull/Desktop/newDevscsv >
Let's see content of /Users/hygull/Desktop/newDevs.csv
cat /Users/hygull/Desktop/newDevs.csv
fullName,Profession,Language,DevIdKen Thompson,C developer,C,1122Ron Wilson,Ruby developer,Ruby,4433Jeff Thomas,Java developer,Java,8899Rishikesh Agrawani,Python developer,Python,6677Kylie Dwine,C++,C++ Developer,11Briella Brown,JavaScript developer,JavaScript,8844
Example 4 - Accessing columns (Retrieving columns using column name)
CSV file (devs.csv): ./docs/csvs/devs.csv
const pd = df = pd // Node DataFrame object dfshow // View DataFrame in tabular form/*┌─────────┬──────────────────────┬────────────────────────┬─────────────────┬───────┐│ (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' │ 'JavaScirpt developer' │ 'JavaScript' │ 8844 │└─────────┴──────────────────────┴────────────────────────┴─────────────────┴───────┘*/ console/* NodeSeries [ 'Ken Thompson', 'Ron Wilson', 'Jeff Thomas', 'Rishikesh Agrawani', 'Kylie Dwine', 'Briella Brown' ]*/ console/* NodeSeries [ 1122, 4433, 8899, 6677, 11, 8844 ]*/ let languages = dfLanguageconsole /* NodeSeries [ 'C', 'Ruby', 'Java', 'Python', 'C++ Developer', 'JavaScript' ]*/ console // C & Ruby let professions = dfProfessionconsole /* NodeSeries [ 'C developer', 'Ruby developer', 'Java developer', 'Python developer', 'C++', 'JavaScirpt developer' ]*/ // Iterate like arraysforlet profession of professions console/* C developer Ruby developer Java developer Python developer C++ JavaScirpt developer*/