Skip to main content

Buckaroo - GUI Data wrangling for pandas

Project description

Buckaroo - The Data Table for Jupyter

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 displays up to 10k rows, is sortable, has value formatting, and scrolls. 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.

Polars-Buckaroo

Quick start

run pip install buckaroo in a notebook execute the following to see Buckaroo

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 run import buckaroo in a Jupyter notebook, Buckaroo becomes the default display method for Pandas and Polars DataFrames

Compatibility

Buckaroo works in the following notebook environments

  • jupyter lab (version >=3.6.0)
  • jupyter notebook (version >=7.0)
  • VS Code notebooks (with extra install)
  • Google colab (with special initiation code)

Buckaroo works with the following DataFrame libraries

  • pandas (version >=1.3.5)
  • polars optional
  • geopandas optional

Learn More

Buckaroo has extensive docs and tests, the best way to learn about the system is from feature example videos on youtube

Interactive Styling Gallery

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

Videos

Example Notebooks

The following notebooks must executed in an environemnt with Buckaroo installed.

Features

High performance table

The core data grid of buckaroo is based on AG-Grid. This loads 1000s of cells in less than a second, with highly customizable display, formatting and scrolling. 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.

Inteligent sampling

Buckaroo will display entire DataFrames up to 10k rows. Displaying more than that would run into performance problems that would make display too slow. When a DataFrame has more than 10k rows, Buckaroo samples a random set of 10k rows, and also adds in the rwos with the 5 most extreme values for each column.

Sorting

All of the data visible in the table (rows shown), 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.

Extensibility at the core

Buckaroo 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 summary stats. Care is taken to prevent errors in summary stats from preventing display of a dataframe.

Lowcode UI (beta)

Buckaroo has a simple low code UI with python code gen. This view can be toggled by clicking on the 0 below the λ icon.

Auto cleaning (beta)

Buckaroo can automatically clean dataframes to remove common data errors (a single string in a column of ints, recognizing date times...). This feature is in beta. You can access it by invoking buckaroo as BuckarooWidget(df, auto_clean=True)

Development installation

For a development installation:

git clone https://github.com/paddymul/buckaroo.git
cd buckaroo
#we need to build against 3.6.5, jupyterlab 4.0 has different JS typing that conflicts
# the installable still works in JL4
pip install build twine pytest sphinx polars mypy jupyterlab==3.6.5 pandas-stubs geopolars pyarrow
pip install -ve .

Enabling development install for Jupyter notebook:

Enabling development install for JupyterLab:

jupyter labextension develop . --overwrite

Note for developers: the --symlink argument on Linux or OS X allows one to modify the JavaScript code in-place. This feature is not available with Windows. `

Developing the JS side

There are a series of examples of the components in examples/ex.

Instructions

npm install
npm run dev

Contributions

We :heart: contributions.

Have you had a good experience with this project? Why not share some love and contribute code, or just let us know about any issues you had with it?

We welcome issue reports here; be sure to choose the proper issue template for your issue, so that we can be sure you're providing the necessary information.

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

buckaroo-0.7.8.tar.gz (85.3 MB view details)

Uploaded Source

Built Distribution

buckaroo-0.7.8-py3-none-any.whl (1.2 MB view details)

Uploaded Python 3

File details

Details for the file buckaroo-0.7.8.tar.gz.

File metadata

  • Download URL: buckaroo-0.7.8.tar.gz
  • Upload date:
  • Size: 85.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for buckaroo-0.7.8.tar.gz
Algorithm Hash digest
SHA256 a78559b5efdf463c2fd5fdb2163a1f9ea8d45e5240f8080941398708e22fffc0
MD5 8147bb9d098bf1080e3df9319249ef07
BLAKE2b-256 86799384d2979572cc6a773de662acc15c3937a94f502e4837e0d7b06b609417

See more details on using hashes here.

File details

Details for the file buckaroo-0.7.8-py3-none-any.whl.

File metadata

  • Download URL: buckaroo-0.7.8-py3-none-any.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for buckaroo-0.7.8-py3-none-any.whl
Algorithm Hash digest
SHA256 9f832a12e9f55f650907342f39063a223241ba62f1511e3eea2eb3ecb938def1
MD5 f4c8b495da7e8a407124f8359c7a9035
BLAKE2b-256 1ea0cd9ef8c7db778606ba6798bc2cef08ff057232225dc7d8537a31d6172e58

See more details on using hashes here.

Supported by

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