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()
)- 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 type | command |
---|---|
Local | npm install node-pandas --save |
Local as dev dependency | npm install node-pandas --save-dev |
Global | npm install node-pandas |
> 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
>
> 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' ]
>
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,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'
>
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