Создание быстрой структуры данных для визуализации на стороне клиента с помощью Immutable.js

StratoDem Analytics использует React с Plotly.js и Leaflet для визуализации данных на стороне клиента. Команда специалистов по обработке данных StratoDem использует панд для обработки данных. Чтобы обеспечить единообразие логики конвейера, мы написали pandas-js, порт pandas на JavaScript с поддержкой Immutable.js. В этом посте рассматривается наше обоснование и реализация pandas-js для визуализации на стороне клиента.

React постоянно перерисовывает при использовании сложных структур данных

Команда разработчиков StratoDem создает настраиваемые клиентские порталы для взаимодействия с вселенной демографических и экономических данных StratoDem Analytics. При создании пользовательского интерфейса мы управляем значительным объемом данных, передаваемых между клиентом и API данных. Если React постоянно повторно отображает целые части страницы, Plotly.js может вызвать серьезное снижение производительности.

Используйте Immutable.js для данных

Типичное решение для оптимизации React - использовать Immutable.js для структур данных, а затем использовать его оптимизированные проверки равенства в методе shouldComponentUpdate.

Для DataComponent теперь мы можем передать что-то вроде Immutable.List([1, 2, 3]) и использовать поверхностное равенство вместо проверки свойств объекта с помощью метода lodash isEqual. DataComponent теперь будет повторно визуализироваться только в том случае, если свойство data отличается от List.

Проблема: Immutable.js не был создан для статистики

Мы любим Immutable.js. Но в нем нет всех статистических тонкостей pandas или NumPy. Мы начали создавать pandas-js, чтобы разрешить тот же тип кода для построения одной строки, что и pandas и Matplotlib:

Решение: оберните Immutable с помощью удобного для статистики и визуализации кода

Вот как это сделать с помощью pandas-js и внутренней реализации StratoDem React + Plotly:

Pandas-js DataFrame - это, по сути, Immutable.Map со столбцами в качестве ключей и pandas-js Series в качестве значений. pandas-js Series помечены как Immutable.List.

Теперь мы можем реализовать проверку для компонента класса:

Поскольку столбцы, индекс и значения являются неизменяемыми объектами, проверка равенства будет намного быстрее, чем проверка типичного массива объектов.

Другие особенности pandas-js

В настоящее время мы работаем над поддержкой большинства основных методов pandas. Скоро появятся групповые и вращающиеся объекты. Ознакомьтесь с документацией здесь, чтобы увидеть больше примеров и описаний.

StratoDem Analytics - это бостонская аналитическая компания, занимающаяся анализом данных и использующая статистику и машинное обучение для анализа географических рынков. Чтобы узнать больше, перейдите на stratodem.com или напишите по адресу [email protected].

Если вы считаете эту статью интересной или имеете какие-либо критические замечания, StratoDem Analytics приглашает вас на работу! Чтобы связаться с нами по поводу программного обеспечения или роли инженеров данных, свяжитесь с нами по адресу [email protected].