Package: buckaroo
Buckaroo - The Data Table for JupyterBuckaroo 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.Try it todayBuckaroo full tourNotebookQuick startrunpip install buckarooin a notebook execute the following to see Buckarooimport 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 runimport buckarooin a Jupyter notebook, Buckaroo becomes the default display method for Pandas and Polars DataFramesCompatibilityBuckaroo works in the following notebook environmentsjupyter 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 librariespandas(version >=1.3.5)polarsoptionalFeaturesHigh performance tableThe core data grid of buckaroo is based onAG-Grid. This loads 1000s of cells in less than a second, with highly customizable display, formatting and scrolling.  You no longer have to usedf.head()to poke at portions of your data.Fixed width formatting by defaultBy 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.HistogramsHistogramsfor every column give you a very quick overview of the distribution of values, including uniques and N/A.Summary statsThe summary stats view can be toggled by clicking on the0below theΣicon.  Summary stats are similar todf.describeand extensible.Inteligent samplingBuckaroo 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.SortingAll 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 coreBuckaroo summary stats are built on thePluggable Analysis Frameworkthat 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 the0below theλicon.Auto cleaning (beta)Buckaroo canautomatically cleandataframes 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 asBuckarooWidget(df, auto_clean=True)Development installationFor a development installation:gitclonehttps://github.com/paddymul/buckaroo.gitcdbuckaroo#we need to build against 3.6.5, jupyterlab 4.0 has different JS typing that conflicts# the installable still works in JL4pipinstallbuildtwinepytestsphinxpolarsmypyjupyterlab==3.6.5pandas-stubs
pipinstall-ve.Enabling development install for Jupyter notebook:Enabling development install for JupyterLab:jupyterlabextensiondevelop.--overwriteNote for developers: the--symlinkargument on Linux or OS X allows one to modify the JavaScript code in-place. This feature is not available with Windows.
`Developing the JS sideThere are a series of examples of the components inexamples/ex.Instructionsnpminstall
npmrundevContributionsWe :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 reportshere; be sure to choose the proper issue template for your issue, so that we can be sure you're providing the necessary information.