MCPcopy Index your code
hub / github.com/buckaroo-data/buckaroo

github.com/buckaroo-data/buckaroo @0.15.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.15.4 ↗ · + Follow
4,013 symbols 14,123 edges 448 files 1,265 documented · 32% updated 6d ago0.15.4 · 2026-07-01★ 683144 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Buckaroo - The Data Table for Jupyter

PyPI version CI License

Buckaroo is a modern data table for Jupyter that expedites the most common exploratory data analysis tasks. The most basic data analysis task - looking at the raw data, is cumbersome with the existing pandas tooling. Buckaroo starts with a modern performant data table that is sortable, has value formatting, and scrolls infinitely. On top of the core table experience, extra features like summary stats, histograms, smart sampling, auto-cleaning, and a low code UI are added. All of the functionality has sensible defaults that can be overridden to customize the experience for your workflow.

Screenshot 2025-05-12 at 3 54 33 PM

Try it now with Marimo in your browser

Play with Buckaroo without any installation. Full Tour

Quick start

pip install buckaroo

Then in a Jupyter notebook:

import pandas as pd
import buckaroo
pd.DataFrame({'a': [1, 2, 10, 30, 50, 60, 50], 'b': ['foo', 'foo', 'bar', pd.NA, pd.NA, pd.NA, pd.NA]})

When you import buckaroo, it becomes the default display for Pandas and Polars DataFrames.

Claude Code MCP Integration

Buckaroo can be used as an MCP server in Claude Code, giving Claude the ability to open data files in an interactive table viewer.

Install

claude mcp add buckaroo-table -- uvx --from "buckaroo[mcp]" buckaroo-table

That's it. This downloads Buckaroo from PyPI into an isolated environment and registers the MCP server. No other installation steps are needed.

Usage

Once installed, ask Claude Code to view any CSV, TSV, Parquet, or JSON file:

show me sales_data.csv

Claude will call the view_data tool, which opens the file in Buckaroo's interactive table UI in your browser.

Compatibility

Buckaroo works in the following notebook environments:

  • jupyter lab (version >=3.6.0)
  • jupyter notebook (version >=7.0)
  • Marimo
  • VS Code notebooks (with extra install)
  • Jupyter Lite
  • Google Colab
  • Claude Code (via MCP)

Buckaroo works with the following DataFrame libraries: - pandas (version >=1.3.5) - polars (optional, pip install buckaroo[polars])

Features

High performance table

The core data grid is based on AG-Grid. It loads thousands of cells in under a second, with highly customizable display, formatting and scrolling. Data is loaded lazily into the browser as you scroll, and serialized with parquet. You no longer have to use df.head() to poke at portions of your data.

Fixed width formatting by default

By default numeric columns are formatted to use a fixed width font and commas are added. This allows quick visual confirmation of magnitudes in a column.

Histograms

Histograms for every column give you a very quick overview of the distribution of values, including uniques and N/A.

Summary stats

The summary stats view can be toggled by clicking on the 0 below the Σ icon. Summary stats are similar to df.describe and extensible.

Sorting

All visible data is sortable by clicking on a column name; further clicks change sort direction then disable sort for that column. Because extreme values are included with sample rows, you can see outlier values too.

Search

Search is built into Buckaroo so you can quickly find the rows you are looking for.

Lowcode UI

Buckaroo has a simple low code UI with Python code gen. This view can be toggled by clicking the checkbox below the λ (lambda) icon.

Autocleaning

Select a cleaning method from the status bar. The autocleaning system inspects each column and runs statistics to decide if cleaning should be applied (parsing dates, stripping non-integer characters, parsing implied booleans like "yes"/"no"), then adds those operations to the low code UI. Different cleaning methods can be tried because dirty data isn't deterministic. Access it with BuckarooWidget(df, auto_clean=True).

Read more: Autocleaning docs

Extensibility at the core

Summary stats are built on the Pluggable Analysis Framework that allows individual summary stats to be overridden, and new summary stats to be built in terms of existing ones. Care is taken to prevent errors in summary stats from preventing display of a dataframe.

Learn More

Interactive Styling Gallery

The interactive styling gallery lets you see different styling configurations. You can live edit code and play with different configs.

Videos

Articles

Example Notebooks

Example apps built on Buckaroo

  • Buckaroo Compare - Join two dataframes and highlight visual differences
  • Buckaroo Pandera - Validate a dataframe with Pandera, then visually highlight where it fails

Contributing

See CONTRIBUTING.md for development setup, build instructions, and release process.

We welcome issue reports; be sure to choose the proper issue template so we get the necessary information.

Extension points exported contracts — how you extend this code

View (Interface)
(no doc) [6 implementers]
packages/buckaroo-js-core/src/components/DFViewerParts/Views.ts
IModel (Interface)
(no doc) [3 implementers]
packages/buckaroo-duckdb-node/src/transport.ts
HeightConfig (Interface)
(no doc)
docs/spa-src/height-modes.tsx
WsLike (Interface)
(no doc) [5 implementers]
packages/buckaroo-js-core/src/server/StateOrchestrator.ts
ColMeta (Interface)
Per-column metadata the dispatcher needs, derived from the SUMMARIZE stats.
packages/buckaroo-duckdb-node/src/histogramSql.ts
IModel (Interface)
(no doc) [2 implementers]
packages/buckaroo-js-core/src/server/IModel.ts
DuckSource (Interface)
(no doc)
packages/buckaroo-duckdb-node/src/DuckSource.ts
SymbolT (Interface)
(no doc)
packages/buckaroo-js-core/src/components/CommandUtils.ts

Core symbols most depended-on inside this repo

get
called by 726
packages/buckaroo-duckdb-node/src/transport.ts
s
called by 364
buckaroo/jlisp/lisp_utils.py
dumps
called by 128
buckaroo/serialization_utils.py
keys
called by 116
packages/buckaroo-js-core/src/components/DFViewerParts/ViewRegistry.ts
loads
called by 88
buckaroo/serialization_utils.py
has
called by 70
packages/buckaroo-js-core/src/components/DFViewerParts/RowStore.ts
process_column
called by 70
buckaroo/pluggable_analysis_framework/stat_pipeline.py
render
called by 67
packages/js/widget.tsx

Shape

Function 2,107
Method 1,283
Class 513
Interface 104
Route 6

Languages

Python80%
TypeScript20%

Modules by API surface

tests/unit/test_paf_v2.py120 symbols
scripts/paddy_format.py99 symbols
tests/unit/test_xorq_stats_v2.py82 symbols
tests/unit/test_xorq_buckaroo_widget.py81 symbols
tests/unit/commands/pandas_commands_test.py63 symbols
buckaroo/file_cache/base.py63 symbols
buckaroo/customizations/pandas_commands.py61 symbols
tests/unit/test_pd_stats_v2.py60 symbols
tests/unit/test_pl_stats_v2.py55 symbols
tests/unit/dataflow/customizable_dataflow_test.py52 symbols
tests/unit/server/test_server.py50 symbols
tests/unit/dataflow/autocleaning_pd_test.py46 symbols

For agents

$ claude mcp add buckaroo \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact