Dataframe¶
The dataframe UI element outputs a visual editor to apply "transforms" to a dataframe, such as filtering rows, applying group-bys and aggregations, and more. The transformed dataframe is shown below the transform editor. The UI output also includes the generated Python used to generate the resulting dataframe, which you can copy paste into a cell. You can programmatically access the resulting dataframe by accessing the element's .value
attribute.
Pandas or Polars Required
In order to use the dataframe UI element, you must have the pandas
or polars
package installed.
You can install it with pip install pandas
or pip install polars
.
Supported transforms are:
- Filter Rows
- Rename Column
- Column Conversion
- Sort Column
- Group By
- Aggregate
@app.cell
def __():
import pandas as pd
import pyodide
csv = pyodide.http.open_url("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv")
df = pd.read_csv(csv)
mo.ui.dataframe(df)
return
marimo.ui.dataframe
¶
dataframe(
df: DataFrameType,
on_change: Optional[
Callable[[DataFrameType], None]
] = None,
page_size: Optional[int] = 5,
limit: Optional[int] = None,
)
Bases: UIElement[Dict[str, Any], DataFrameType]
Run transformations on a DataFrame or series.
Currently only Pandas or Polars DataFrames are supported.
Examples:
ATTRIBUTE | DESCRIPTION |
---|---|
value |
The transformed DataFrame or series.
TYPE:
|
PARAMETER | DESCRIPTION |
---|---|
df
|
The DataFrame or series to transform.
TYPE:
|
page_size
|
The number of rows to show in the table. Defaults to 5.
TYPE:
|
limit
|
The number of items to load into memory, in case the data is remote and lazily fetched. This is likely true for SQL-backed dataframes via Ibis.
TYPE:
|
on_change
|
Optional callback to run when this element's value changes.
TYPE:
|
batch
¶
batch(**elements: UIElement[JSONType, object]) -> batch
Convert an HTML object with templated text into a UI element.
This method lets you create custom UI elements that are represented by arbitrary HTML.
Example.
user_info = mo.md(
'''
- What's your name?: {name}
- When were you born?: {birthday}
'''
).batch(name=mo.ui.text(), birthday=mo.ui.date())
In this example, user_info
is a UI Element whose output is markdown
and whose value is a dict with keys 'name'
and 'birthday
'
(and values equal to the values of their corresponding elements).
Args.
- elements: the UI elements to interpolate into the HTML template.
callout
¶
callout(
kind: Literal[
"neutral", "danger", "warn", "success", "info"
] = "neutral"
) -> Html
Create a callout containing this HTML element.
A callout wraps your HTML element in a raised box, emphasizing its
importance. You can style the callout for different situations with the
kind
argument.
Examples.
form
¶
form(
label: str = "",
*,
bordered: bool = True,
loading: bool = False,
submit_button_label: str = "Submit",
submit_button_tooltip: Optional[str] = None,
submit_button_disabled: bool = False,
clear_on_submit: bool = False,
show_clear_button: bool = False,
clear_button_label: str = "Clear",
clear_button_tooltip: Optional[str] = None,
validate: Optional[
Callable[[Optional[JSONType]], Optional[str]]
] = None,
on_change: Optional[
Callable[[Optional[T]], None]
] = None
) -> form[S, T]
Create a submittable form out of this UIElement
.
Use this method to create a form that gates the submission
of a UIElement
s value until a submit button is clicked.
The value of the form
is the value of the underlying
element the last time the form was submitted.
Examples.
Convert any UIElement
into a form:
Combine with HTML.batch
to create a form made out of multiple
UIElements
:
form = (
mo.ui.md(
'''
**Enter your prompt.**
{prompt}
**Choose a random seed.**
{seed}
'''
)
.batch(
prompt=mo.ui.text_area(),
seed=mo.ui.number(),
)
.form()
)
Args.
label
: A text label for the form.bordered
: whether the form should have a borderloading
: whether the form should be in a loading statesubmit_button_label
: the label of the submit buttonsubmit_button_tooltip
: the tooltip of the submit buttonsubmit_button_disabled
: whether the submit button should be disabledclear_on_submit
: whether the form should clear its contents after submittingshow_clear_button
: whether the form should show a clear buttonclear_button_label
: the label of the clear buttonclear_button_tooltip
: the tooltip of the clear buttonvalidate
: a function that takes the form's value and returns an error message if the value is invalid, orNone
if the value is valid
get_column_values
¶
Get all the unique values in a column.
send_message
¶
Send a message to the element rendered on the frontend from the backend.