Skip to main content

Jupyterlab extension to browse tabular data files (Parquet, Excel, CSV, TSV) with filtering and sorting capabilities

Project description

jupyterlab_tabular_data_viewer_extension

GitHub Actions npm version PyPI version Total PyPI downloads JL4 Ready

View and browse Parquet, Excel, CSV, and TSV files directly in JupyterLab. Double-click any .parquet, .xlsx, .csv, or .tsv file to open it in a simple, spreadsheet-like table view - no code required. Navigate through your data, inspect values, and explore the structure of your tabular data files with interactive column resizing and advanced filtering capabilities.

Parquet Viewer

Opening files: Right-click any supported file and select "Tabular Data Viewer" from the "Open With" menu, or simply double-click to open with the default viewer.

Open With Menu

Column statistics: Hover over any column header to reveal an info icon, click it to view comprehensive statistics.

Column Statistics Icon

Column Statistics Modal

Context menu: Right-click any row to copy data as JSON.

Copy Row as JSON

Features

Supported File Formats:

  • Parquet files (.parquet) - Full support with efficient columnar data reading
  • Excel files (.xlsx) - Reads first worksheet only. Excel files must be simple tabular data without merged cells, complex formulas, or advanced formatting. Files with these features may not display correctly or fail to load
  • CSV files (.csv) - Comma-separated values with UTF-8 encoding (fallback to latin1)
  • TSV files (.tsv) - Tab-separated values with UTF-8 encoding (fallback to latin1)

Core viewing and navigation:

  • Simple table display showing your data in familiar spreadsheet format
  • Column headers with field names and simplified datatype indicators
  • Interactive column resizing - drag column borders to adjust width independently
  • Progressive loading - starts with 500 rows, automatically loads more as you scroll
  • File statistics (column count, row count, file size) at a glance
  • Fixed status bar remains visible during horizontal scrolling
  • Handles large files efficiently with server-side processing

Advanced filtering and sorting:

  • Column sorting with three-state toggle (ascending, descending, off)
  • Per-column filtering with substring or regex pattern matching
  • Case-insensitive search option
  • Numerical filters supporting comparison operators (>, <, >=, <=, =)
  • Clear filters functionality to reset all active filters
  • Multiple filters work together to narrow down results

Additional features:

  • Column statistics modal - View comprehensive statistics including data type, row counts, null values, unique counts, and type-specific metrics (numeric: min/max/mean/median/std dev/outliers using IQR×1.5; string: most common value/length stats; date: earliest/latest dates). Copy statistics as JSON with one click
  • Right-click context menu on rows to copy data as JSON
  • Configurable file type support via Settings - Enable/disable Parquet, Excel, or CSV/TSV handling
  • All features work seamlessly across all supported file formats

Installation

Requires JupyterLab 4.0.0 or higher.

pip install jupyterlab_tabular_data_viewer_extension

Uninstall:

pip uninstall jupyterlab_tabular_data_viewer_extension

Configuration

Configure file type support through JupyterLab Settings:

  1. Open Settings → Settings Editor
  2. Search for "Tabular Data Viewer Extension"
  3. Configure options:
    • Enable Parquet files - Default: enabled
    • Enable Excel files - Default: enabled
    • Enable CSV files - Default: enabled
    • Enable TSV files - Default: enabled

When a file type is disabled, files open with JupyterLab's default handler instead.

Troubleshooting

Verify both extension components are enabled if the extension doesn't work:

# Check server extension
jupyter server extension list

# Check frontend extension
jupyter labextension list

Both commands should show jupyterlab_tabular_data_viewer_extension as enabled. Reinstall if either is missing or disabled.

Development Setup

Requires NodeJS for building TypeScript frontend. Uses jlpm (JupyterLab's pinned yarn version) for consistency.

Initial setup:

# Create virtual environment
python -m venv .venv
source .venv/bin/activate

# Install in editable mode
pip install --editable ".[dev,test]"

# Link frontend and enable server extension
jupyter labextension develop . --overwrite
jupyter server extension enable jupyterlab_tabular_data_viewer_extension

Development workflow:

Use two terminals for efficient development:

  • Terminal 1: jlpm watch (auto-rebuild on file changes)
  • Terminal 2: jupyter lab (run development instance)

Refresh browser after changes to see updates. Build generates source maps for debugging.

Enable deeper debugging with unminimized JupyterLab build:

jupyter lab build --minimize=False

Removing development installation:

jupyter server extension disable jupyterlab_tabular_data_viewer_extension
pip uninstall jupyterlab_tabular_data_viewer_extension

Then delete the jupyterlab_tabular_data_viewer_extension symlink from your labextensions directory (find with jupyter labextension list).

Testing

Three-tier testing strategy: Python backend, TypeScript frontend, and integration tests.

Python tests (pytest with coverage):

pip install -e ".[test]"
jupyter labextension develop . --overwrite
pytest -vv -r ap --cov jupyterlab_tabular_data_viewer_extension

TypeScript tests (Jest):

jlpm
jlpm test

Integration tests (Playwright + Galata): Simulates real user interactions to validate complete workflows. See ui-tests README for detailed instructions.

Packaging and Release

See RELEASE.md for instructions on building distributable packages and publishing releases.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file jupyterlab_tabular_data_viewer_extension-1.2.12.tar.gz.

File metadata

File hashes

Hashes for jupyterlab_tabular_data_viewer_extension-1.2.12.tar.gz
Algorithm Hash digest
SHA256 83bb598de0e1326250e70d99fe4fca703e58b639a2a4e1d5d8b13773fcee2bd2
MD5 5417af8ccee51b84c4ab50a81b847793
BLAKE2b-256 60eb4a5c643fce5e9a632ed68c0eecba73bcf26a3620294f719009e0dced888a

See more details on using hashes here.

File details

Details for the file jupyterlab_tabular_data_viewer_extension-1.2.12-py3-none-any.whl.

File metadata

File hashes

Hashes for jupyterlab_tabular_data_viewer_extension-1.2.12-py3-none-any.whl
Algorithm Hash digest
SHA256 fffc00c8712a698a911067e57469e82f1d265cdd8b906b7b671f45dc174b15e6
MD5 6fb32a7fa052ed37c8c3c55b11938b6e
BLAKE2b-256 e58e7b1243c426aca7ede20fcbf457ad97f5e70dee923386ad8a33826ec6d531

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page