Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/finos/ipyregulartable
- Owner: finos
- License: apache-2.0
- Created: 2020-06-15T21:45:08.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-02-05T14:45:34.000Z (10 months ago)
- Last Synced: 2024-04-13T21:00:34.766Z (8 months ago)
- Topics: data-table, data-visualization, dataframe, datagrid, ipywidgets, javascript, jupyter, jupyter-notebook, jupyterlab, jupyterlab-extension, notebook, python, table, typescript
- Language: JavaScript
- Homepage:
- Size: 7.43 MB
- Stars: 99
- Watchers: 8
- Forks: 14
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Authors: AUTHORS
Awesome Lists containing this project
- awesome-jupyter-resources - GitHub - 40% open · ⏱️ 20.07.2022): (交互式小部件和可视化)
- best-of-jupyter - GitHub - 37% open · ⏱️ 18.11.2024): (Interactive Widgets & Visualization)
README
#
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.