Недавно я работал с 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)
Я буду продолжать добавлять больше утилит, любой вклад всегда приветствуется :)