Data Explorer is a visualization-first extension for VS Code-compatible editors, including forks such as Cursor, for exploring dataframes and local data files. It focuses on fast viewing, paging, Data Wrangler-style quick insights, summaries, and Excel-like filters instead of transformation pipelines.
It is loosely inspired by Microsoft's VS Code Data Wrangler experience, but it is an independent implementation. Data Wrangler is closed source, which makes it difficult to contribute features upstream, adapt it for VS Code forks such as Cursor, or implement backend-native features like first-class Polars support. Data Explorer exists to make that exploration layer open, hackable, and Polars-friendly from the start.
These screenshots are generated from the real built webview/notebook renderer using npm run capture:screenshots. The capture script loads fixtures/sample.csv through the Polars runtime and executes fixtures/example.ipynb with nbclient to capture the current notebook MIME renderer output.
- Native Polars and Pandas runtime backends, including live notebook sessions backed by the active Jupyter kernel.
- Direct launch for CSV, TSV, Parquet, JSONL, XLSX, and XLS files.
- Paged dataframe grid with sticky headers, row numbers, type icons, and per-column Quick Insights.
- Dataset summary panel with shape, row/column counts, missing-value breakdowns, and duplicate-row counts.
- Multi-column sorting and column filters from the webview or column header menus.
- Jupyter variable viewer integration for Pandas and Polars dataframe names, with the full window reading from the live kernel.
- Lightweight notebook output renderer for
data_wrangler_runtime.notebook.show(...).
- Install the extension in Cursor or VS Code.
- Right-click a
.csv,.tsv,.parquet,.jsonl,.xlsx, or.xlsfile. - Choose Data Explorer: Open Current File.
- Use the left panel to select columns, search values, add predicates, and sort.
File-backed sessions default to Polars. Change dataExplorer.defaultBackend to pandas if you want Pandas file loading instead.
Run a cell that leaves a Pandas or Polars dataframe available in the active Jupyter kernel. Jupyter can surface Open in Data Explorer for supported variables via the variable viewer integration, or you can use Data Explorer: Open Notebook Variable and enter the dataframe variable name:
import polars as pl
df = pl.read_csv("sales.csv")Data Explorer detects Polars and Pandas dataframe variables and opens them with the matching backend. For notebook variables, paging, filtering, sorting, and Quick Insights execute against the live kernel variable rather than a static snapshot.
import polars as pl
from data_wrangler_runtime.notebook import show
df = pl.read_csv("sales.csv")
show(df, label="sales")This emits application/vnd.data-explorer.viewer.v1+json, which the bundled notebook renderer displays as a compact grid preview.
Polars dataframes stay Polars in the runtime. The Polars backend uses native operations for:
- file reads with
polars.read_csv,read_parquet,read_ndjson, andread_excel - paging with
slice - filters with Polars expressions
- sorting with
DataFrame.sort - summaries with Polars null counts, distinct counts, value counts, and numeric aggregates
The test suite asserts that Polars file sessions do not call to_pandas().
npm install
python3 -m venv .venv
.venv/bin/python -m pip install -e "python[dev]"
npm run build
npm run package
cursor --install-extension data-explorer-0.1.0.vsix --forceReload the editor after installing the VSIX. Then:
- Open
fixtures/sample.csv, right-click the editor tab or Explorer item, and run Data Explorer: Open Current File. - Open
fixtures/example.ipynb, select the.venvPython kernel, and run the notebook cell. The dataframe is a real Polars dataframe. - From the notebook, use Open in Data Explorer when Jupyter offers it for
df, or run Data Explorer: Open Notebook Variable and enterdf. The full Data Explorer webview should page, filter, sort, and summarize the live kernel dataframe.
The extension setting dataExplorer.pythonPath defaults to .venv/bin/python, so the local development install uses the editable runtime environment above. If your editor opens the notebook with fixtures/ as its working directory, fixtures/example.ipynb still works because it checks both fixtures/sample.csv and sample.csv.
npm install
python3 -m venv .venv
.venv/bin/python -m pip install -e "python[dev]"
npm run build
npm testUseful checks:
npm run test:ts
npm run test:python
npm run build
npm run packageRun the extension from Cursor or VS Code with Launch Extension, or package it with:
npm run packageData Explorer currently prioritizes visualization and exploration:
- grid viewing
- file-backed sessions
- live notebook variable and notebook output entry points
- filters, sorting, schema, summaries, and Quick Insights
It intentionally does not yet implement Data Wrangler-style cleaning step history, transform code generation, or by-example/FlashFill operations.


