Danfo.js

KHW·2020년 12월 29일
1

Danfo.js

목록 보기
1/23

1. Danfo

Danfo.js는 구조화 된 데이터를 조작하고 처리하기위한 직관적이고 사용하기 쉬운 고성능 데이터 구조를 제공하는 오픈 소스 JavaScript 라이브러리입니다.

특징: Danfo.js is fast. It is built on Tensorflow.js and supports tensors out of the box. This means you can convert danfo data structure

우리가 주의할 것은 Tensorflow를 기반으로 한다.

2. 사용법

1) 브라우저

<script src="https://cdn.jsdelivr.net/npm/danfojs@0.1.2/dist/index.min.js"></script>

2) Node.js

npm install danfojs-node

이때 주의 할 점이 Node.js의 경우 같은 코드의 결과라도
referenceerror: dfd is not defined
이러한 오류가 날 수 있다.
원인은 tensorflow가 설치되지 않아서이다.

따라서 이와 관련한
npm install @tensorflow/tfjs-node
명령을 실행해주어야 한다.

그 후에도 정상적으로 실행은 되면서 Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 이런 출력을 볼 수도 있는데 가이드라인 차원에서 더 빨라질수도 있다는 일종의 경고 메세지일 뿐이다.

3. 기본 사용법

node.js

const dfd = require("danfojs-node");
var s = new dfd.Series([20,21,22,23]);
console.log(s);

browser

var s = new dfd.Series([20,21,22,23]);
console.log(s);

아래의 내용들은 browser 기준의 script 내용만 담을 예정이다.

4. 통계정보 확인하기

var s = new dfd.Series([20,21,22,23]);
s.describe().print();

위 결과를 보면

이와같이 나타나면서 통계와 관련한 내용들을 얻어낼 수 있다.

5. 표 출력하기

<body>
    <div id="s_table"></div>
    <script>
        var s = new dfd.Series([20,21,22,23]);
        s.plot('s_table').table();
    </script>
</body>

6. 그래프 출력하기

<body>
    <div id="s_line"></div>
    <script>
        var s = new dfd.Series([20,21,22,23]);
        s.plot('s_line').line();
    </script>
</body>

7. DataFrame 생성

1) 배열방식

var d1 = new dfd.DataFrame([
            {'온도':20, '요일':'월', '판매량':40},
            {'온도':24, '요일':'화', '판매량':42},
            {'온도':21, '요일':'수', '판매량':44},
            {'온도':10, '요일':'목', '판매량':48},
            {'온도':5, '요일:':'금', '판매량':50}
        ])

2) 객체방식

var d2 = new dfd.DataFrame({
            '온도' : [20,24,21,10,5],
            '요일' : ['월','화','수','목','금'],
            '판매량' : [40,42,44,48,50]
        })

8. 파일 형태를 가져오기

<body>
    <div id="d1_table"></div>
    <script>
        dfd.read_csv('https://khw970421.github.io/covid/Project1/covidcity(changed).csv')
        .then(function(data){
            data.plot('d1_table').table();
        })
    </script>
</body>

위와같이 실행을 하면 해당 브라우저에 표를 출력할 수 있다. (github.io 서버에는 csv파일이 존재)

9. 필요한 Series만 가져오는 방법

var d1 = new dfd.DataFrame([
            {'온도':20, '요일':'월', '판매량':40},
            {'온도':24, '요일':'화', '판매량':42},
            {'온도':21, '요일':'수', '판매량':44},
            {'온도':10, '요일':'목', '판매량':48},
            {'온도':5, '요일:':'금', '판매량':50}
        ])

열 골라내기

d1.loc({columns:['온도','판매량']}).print();

행 골라내기

d1.loc({rows:[1,3]}).print();

위와같이 loc을 이용해서 필요한 부분을 가져올 수있다.

10. 조건부 설정

d1.query({"column":"온도","is":">","to":20}).print();
해당 코드를 통해 column에서 온도가 20도 보다 높은 row들을 print하는 역할을 수행한다.

이를 좀 더 변형 시키면
d1.query({"column":"온도","is":">","to":20}).loc({columns:['온도','판매량']}).print();
코드를 통해 column에서 온도가 20도 보다 높은 row들 중에서 columns가 온도와 판매량만을 가진 것들을 출력하는 역할을 수행한다.

11. 행 추가

var newRow = new dfd.DataFrame({'온도':[30,40],'요일':['토','일'],'판매량':[70,80]});
d1.append(newRow).print();

9.에 있는 d1에다가 해당 내용을 적용시키면 행이 2개 추가되는 것을 알 수 있다.

12. 열 추가

value.addColumn('column' : 'A','value':[ ]);

var newRow = new dfd.DataFrame({'온도':[30,40],'요일':['토','일'],'판매량':[70,80]});
var new_array = d1.append(newRow);
new_array.addColumn({'column':'rain','value':[true,false,true,false,true,true,true]});
new_array.print();

필요한 column을 추가시킨다.

13. 행 삭제

d1.drop({axis:0,index:[0]});   

14. 열 삭제

 d1.drop({axis:1,columns:['온도']});

주의할 점은 axis가 행 삭제때는 0이고 열 삭제때는 1이라는 것이다.

출처

생활코딩
node.js에러

profile
나의 하루를 가능한 기억하고 즐기고 후회하지말자

0개의 댓글