Недавно я работал с pandas Dataframe в python, и мне понравилась концепция векторизации, которая позволяет избежать циклов и дает прямой доступ к данным на основе столбцов.

Поэтому я попытался понять его концепции и создать аналогичный класс в Javascript, я понял, что в настоящее время сложно правильно реализовать все варианты использования в JS, поэтому я хотел сначала начать с доступа к векторизованным столбцам и его операций.

Репозиторий Github: https://github.com/nightraiser/dataFrameJS

Как это использовать ?

var obj = new Dataframe([{имя: ‘тест 1’, возраст: 28, пол: ‘М’}, {имя: ‘тест 2’, возраст: 24, пол: ‘Ж’}])

Это дает доступ к некоторому набору утилит, таких как
1) print: этот метод распечатывает оглавление данных.

2) getByCol: принимает имя столбца и возвращает список всех данных с ключом, например: obj.getByCol('name') вернет ['test 1 ', 'тест 2']

3) getByCols: принимает имена столбцов массива и возвращает список всех данных с ключом ex: obj.getByCol(['name', 'age'] ) вернет [['тест 1', 'тест 2'], [28, 24]]

4) columns : список всех имен столбцов, например: obj.columns() вернет [‘имя’, ‘возраст’, ‘пол’]

5) removeDuplicates: принимает имя столбца, над которым должна быть выполнена операция, и сохраняет последним; логическое значение, которое нужно установить, если мы хотим сохранить последний результат и игнорировать остальные. Это будет самостоятельная работа и изменение данных самого текущего объекта.

6) переименовать: принимает имя столбца и новое имя, имя столбца будет заменено самостоятельной операцией.

7) groupBy: принимает имя столбца и возвращает объект с ключами, сгруппированное значение столбцов и значение в качестве нового кадра данных.

8) extend: принимает массив значений и сверяет форму данных с текущим, если форма выглядит хорошо, он добавляет эти новые данные в текущий фрейм данных.

и еще несколько утилит, основным преимуществом текущей версии будут случаи, когда у вас есть огромный список объектов, и вам нужно зациклить его в нескольких местах и ​​извлечь из него частичные данные, где сложность будет O( n) здесь это уменьшится до O(1)

Я буду продолжать добавлять больше утилит, любой вклад всегда приветствуется :)