Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/finos/ipyregulartable

High performance, editable, stylable datagrids in jupyter and jupyterlab
https://github.com/finos/ipyregulartable

data-table data-visualization dataframe datagrid ipywidgets javascript jupyter jupyter-notebook jupyterlab jupyterlab-extension notebook python table typescript

Last synced: 2 months ago
JSON representation

High performance, editable, stylable datagrids in jupyter and jupyterlab

Awesome Lists containing this project

README

        




Build Status
Coverage
PyPI Version
NPM Version
License
FINOS Incubating
Binder

#

An [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) wrapper of [regular-table](https://github.com/finos/regular-table) for Jupyter.

## Examples
### Two Billion Rows
[Notebook](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/examples/two_billion.ipynb)

![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/twobillion.gif)

### Click Events
[Notebook](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/examples/click_events.ipynb)

![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/click_events.gif)

### Edit Events
[Notebook](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/examples/edit_events.ipynb)

![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/edit_events.gif)

### Styling
[Notebook](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/examples/styling.ipynb)

![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/style.gif)

### Pandas Data Model
For interactive/streaming sorting/pivoting/aggregation, take a look at [Perspective](https://github.com/finos/perspective), *Streaming pivot visualization via WebAssembly*, which also leverages [`regular-table`](https://github.com/finos/regular-table).

[Notebook](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/examples/pandas.ipynb)

#### Series
![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/pd_series.png)

#### DataFrame
![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/pd_df.png)

#### DataFrame - Row Pivots
![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/pd_rpivot.png)

#### DataFrame - Column Pivots
![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/pd_cpivot.png)

#### DataFrame - Pivot Table
![](https://raw.githubusercontent.com/finos/ipyregulartable/main/docs/img/pd_pt.png)

## Installation

### PyPI

`ipyregulartable` is available on [PyPI](https://pypi.org/project/ipyregulartable/):

```bash
pip install ipyregulartable
```

### Conda

`ipyregulartable` is also available on [conda-forge](https://github.com/conda-forge/ipyregulartable-feedstock):

```bash
conda install -c conda-forge ipyregulartable
```

### Jupyter Server/JupyterLab Extension

```bash
jupyter labextension install ipyregulartable
jupyter serverextension enable --py ipyregulartable
```

If you are using Jupyter Notebook 5.2 or earlier, you may also need to enable
the nbextension:
```bash
jupyter nbextension enable --py [--sys-prefix|--user|--system] ipyregulartable
```

## Data Model
It is very easy to construct a custom data model. Just implement the abstract methods on the base `DataModel` class.

```python
class DataModel(with_metaclass(ABCMeta)):
@abstractmethod
def editable(self, x, y):
'''Given an (x,y) coordinate, return if its editable or not'''

@abstractmethod
def rows(self):
'''return total number of rows'''

@abstractmethod
def columns(self):
'''return total number of columns'''

@abstractmethod
def dataslice(self, x0, y0, x1, y1):
'''get slice of data from (x0, y0) to (x1, y1) inclusive'''
```

Any `DataModel` object can be provided as the argument to `RegularTableWidget`. Note that `regular-table` may make probing calls of the form (0, 0, 0, 0) to assess data limits.

## Development

See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.

## License

This software is licensed under the Apache 2.0 license. See the
[LICENSE](LICENSE) and [AUTHORS](AUTHORS) files for details.