Danfo.js 소개 - 데이터 조작 및 처리



Danfo.js



고성능의 직관적이고 사용하기 쉬운 데이터 구조를 제공하는 오픈 소스 JavaScript 라이브러리
구조화된 데이터를 조작하고 처리합니다. PythonPandas에서 크게 영감을 받았습니다.
라이브러리와 유사한 인터페이스 및 API를 제공합니다. 또한 Danfo.js는 빠르고
Tensorflow.js 즉시 사용할 수 있는 텐서를 지원합니다.

NumPy, Pandas, sklearn 등과 같은 오픈 소스 라이브러리의 생태계 덕분에 Python에서 데이터 과학이 번창합니다.
JavaScript 커뮤니티에서 유사한 도구를 개발하는 것을 보는 것이 좋습니다. 이것은 큰 일의 시작일 수 있습니다.
이제 Danfo.js가 작동하는 모습을 살펴보겠습니다.

설치



danfo.js를 얻는 방법에는 두 가지가 있습니다. npm을 통해 설치하려면 다음을 수행하십시오.

npm install danfojs-node

아래 CDN을 사용하여 브라우저에서 설치하고 사용할 수도 있습니다.

<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/index.min.js"></script>



값 목록을 전달하여 Series 객체를 생성하고 danfo.js가 기본 정수 인덱스를 생성하도록 합니다.



const dfd = require("danfojs-node")
s = new dfd.Series([1, 3, 5, undefined, 6, 8])
s.print()



0


0
1

1


2
5


NaN

4
6

5
8



JSON 데이터 및 벡터 작업 읽기



const 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)
// Adding to series object, can use sub, mul, div, and pow
df['A'].add(df['B']).print()
df['A'].pow(2).print()
// Maximum value of C
console.log(df['C'].max()) // 4.505899

A와 B를 더하다








0
4.744029998779297

1
0.2825700044631958

2
-0.13752996921539307


-0.8194299936294556



광장








0
0.21270543336868286

1
0.2613254487514496

2
0.4776192009449005


0.22014862298965454



URL에서 CSV 파일 읽기



dfd.read_csv("https://raw.githubusercontent.com/curran/data/gh-pages/jsLibraries/jsLibs.csv")
.then(df => {

//prints the first five columns
df.head().print()

}).catch(err => {
console.log(err);
})




도서관
축소된 파일 크기(kb)
Github 별


0
녹아웃.js
17
5036

1
Angular.js
106
24580

2
Ember.js
71
10368


Can.js
82
928

4
React.js
123
7015



모든 숫자 열에 대한 설명 통계 계산



df.describe().print()



축소된 파일 크기(kb)
Github 별


세다
7
7

평균
58.071426
9464.286133

성병
49.75978
9038.434833


1
156

중앙값
71
7015

최대
123
24580

변화
2476.035714
81693304.23



데이터의 모양, 열 이름 및 dtype



console.log(df.shape);

console.log(df.column_names);

df.ctypes.print()



[ 7, 3 ]
[ 'Library', 'Minified File Size (kb)', 'Github Stars' ]



0


도서관


축소된 파일 크기(kb)
float32

Github 별
int32



dfd.read_csv("https://raw.githubusercontent.com/curran/data/gh-pages/jsLibraries/jsLibs.csv")
.then(df => {
df['Library'].print()
}).catch(err => {
console.log(err);
})



도서관


0
녹아웃.js

1
Angular.js

2
Ember.js


Can.js

4
React.js

5
Backbone.js

6
Model.js



레이블, 슬라이싱 및 쿼리로 다중 축에서 선택



dfd.read_csv("https://raw.githubusercontent.com/curran/data/gh-pages/jsLibraries/jsLibs.csv")
.then(df => {
// Selection by label
const sub_df = df.loc({ rows: [0, 1], columns: ["Library", "Github Stars"] })
sub_df.print()

// Selection by slicing
const slice_df = df.loc({ rows: ["0:4"], columns: ["Library", "Github Stars"] })
slice_df.print()

// Selection by query
const query_df = df.query({ "column": "Github Stars", "is": ">", "to": 10000 })
query_df.print()
}).catch(err => {
console.log(err);
})

다축 레이블로 선택





도서관
Github 별


0
녹아웃.js
5036

1
Angular.js
24580


슬라이싱에 의한 선택





도서관
Github 별


0
녹아웃.js
5036

1
Angular.js
24580

2
Ember.js
10368


Can.js
928


쿼리별 선택





도서관
축소된 파일 크기(kb)
Github 별


1
Angular.js
106
24580

2
Ember.js
71
10368

5
Backbone.js
6.5
18167



데이터 프레임 개체에 대해 수행할 수 있는 많은 수학적 연산이 있습니다.




Danfo는 플로팅을 지원합니다



Danfo는 플로팅을 위한 백엔드로 Plotly.js을 사용합니다. 이를 통해 DataFrame 및 Series에서 대화형 플롯을 만들 수 있습니다. 플로팅은 danfo.js의 브라우저 버전에서만 작동하며 플롯을 표시하려면 HTML div가 필요합니다.

<!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/[email protected]/dist/index.min.js"></script>
<title>Document</title>
</head>

<body>

<div id="plot_div"></div>
<script>

dfd.read_csv("https://raw.githubusercontent.com/curran/data/gh-pages/jsLibraries/jsLibs.csv")
.then(df => {

var layout = {
title: 'JavaScript Libraries and Github Stars',
xaxis: {
title: 'Libraries',
},
yaxis: {
title: 'Stars',
}
}

new_df = df.set_index({ key: "Library" })
new_df.plot("plot_div").bar({ columns: ["Github Stars"], layout: layout })

}).catch(err => {
console.log(err);
})

</script>
</body>

</html>


좋은 웹페이지 즐겨찾기