Skip to main content
marimo provides powerful interactive dataframe components that let you explore, filter, sort, and transform your data directly in the UI.

Supported Libraries

marimo supports multiple dataframe libraries:
  • pandas - The most popular Python data analysis library
  • polars - High-performance DataFrame library
  • pyarrow - Apache Arrow in Python
  • ibis - Unified interface for SQL and dataframes
  • DuckDB - In-process SQL database
All dataframe operations use narwhals under the hood for efficient, library-agnostic transformations.

Basic Usage

Interactive Transformations

The mo.ui.dataframe component allows users to apply transformations through the UI:

Accessing Transformed Data

In another cell:

Configuration Options

Format Mapping

Customize how values are displayed:

Lazy Evaluation

For large datasets or lazy dataframes (Polars LazyFrame, Ibis), marimo automatically enables lazy mode:
With lazy mode, an “Apply” button appears - transformations are only executed when clicked.

Export Options

Users can download transformed data in multiple formats:
  • CSV - With configurable encoding and separator
  • JSON - With ASCII encoding option
  • Parquet - Efficient columnar format

Code Generation

marimo can generate Python code for the transformations applied in the UI:
Transformations are reactive - when you apply filters or sorts in the UI, df_widget.value automatically updates in dependent cells.

Selection and Tables

For row/cell selection without transformations, use mo.ui.table instead:
See the Tables guide for more details.

Performance Tips

For DataFrames with more than 100,000 rows, lazy mode is automatically enabled to prevent loading all data into memory.
  • Use limit parameter for remote/lazy data sources
  • Enable lazy=True for expensive transformations
  • Consider Polars LazyFrame for very large datasets
  • Use page_size to control initial rendering cost

Example: Complete Workflow

In another cell: