- Spec files
pypi-streamlit
Describes: pkg:pypi/streamlit@1.49.x
- Description
- A faster way to build and share data apps
- Author
- tessl
- Last updated
data-display.md docs/
1# Data Display23Advanced data display components for presenting and editing tabular data and metrics. These components provide rich interactions for data exploration and manipulation.45## Capabilities67### Interactive DataFrames89Display and interact with tabular data using enhanced dataframe components.1011```python { .api }12def dataframe(data=None, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, selection_mode="single-row", on_select="rerun", key=None):13"""14Display a dataframe as an interactive table.1516Parameters:17- data: DataFrame, array-like, or dict to display18- width (int): Table width in pixels19- height (int): Table height in pixels20- use_container_width (bool): Use full container width21- hide_index (bool): Hide row indices22- column_order (list): Custom column order23- column_config (dict): Column configuration mapping24- selection_mode (str): Row selection mode ('single-row', 'multi-row', 'single-column', 'multi-column', or 'disabled')25- on_select (str): Behavior on selection ('rerun' or 'ignore')26- key (str): Unique key for the widget2728Returns:29DataFrame selection information30"""3132def data_editor(data, width=None, height=None, use_container_width=False, hide_index=None, column_order=None, column_config=None, num_rows="fixed", disabled=False, key=None, on_change=None, args=None, kwargs=None):33"""34Display an editable data table.3536Parameters:37- data: DataFrame, array-like, or dict to edit38- width (int): Table width in pixels39- height (int): Table height in pixels40- use_container_width (bool): Use full container width41- hide_index (bool): Hide row indices42- column_order (list): Custom column order43- column_config (dict): Column configuration mapping44- num_rows (str): Row management ('fixed', 'dynamic')45- disabled (bool): Disable editing46- key (str): Unique key for the widget47- on_change (callable): Function to call when data changes48- args (tuple): Arguments to pass to on_change function49- kwargs (dict): Keyword arguments to pass to on_change function5051Returns:52DataFrame: Edited data53"""54```5556### Static Tables5758Display read-only tabular data with simple formatting.5960```python { .api }61def table(data=None):62"""63Display a static table.6465Parameters:66- data: DataFrame, array-like, or dict to display as table6768Returns:69None70"""71```7273### Metrics Display7475Display key performance indicators and metrics with delta comparisons.7677```python { .api }78def metric(label, value, delta=None, delta_color="normal", help=None, label_visibility="visible"):79"""80Display a metric in large, prominent formatting.8182Parameters:83- label (str): Metric label84- value: Metric value (number or string)85- delta: Change in metric value (number or string)86- delta_color (str): Color for delta ('normal', 'inverse', or 'off')87- help (str): Optional tooltip text88- label_visibility (str): Label visibility ('visible', 'hidden', 'collapsed')8990Returns:91None92"""93```9495## Column Configuration9697Configure how columns are displayed and edited in dataframes and data editors.9899### Column Configuration Classes100101```python { .api }102# Base column configuration103class Column:104"""Base column configuration class."""105def __init__(self, label=None, width=None, help=None, disabled=None, required=None):106"""107Parameters:108- label (str): Column display name109- width (str): Column width ('small', 'medium', 'large', or pixel value)110- help (str): Help text for column header111- disabled (bool): Disable editing for this column112- required (bool): Mark column as required113"""114115# Text column configuration116class TextColumn(Column):117"""Text column configuration with validation."""118def __init__(self, max_chars=None, validate=None, **kwargs):119"""120Parameters:121- max_chars (int): Maximum character count122- validate (str or callable): Validation pattern or function123"""124125# Number column configuration126class NumberColumn(Column):127"""Numeric column configuration with formatting."""128def __init__(self, min_value=None, max_value=None, step=None, format=None, **kwargs):129"""130Parameters:131- min_value (float): Minimum allowed value132- max_value (float): Maximum allowed value133- step (float): Step size for increments134- format (str): Number format string135"""136137# Checkbox column configuration138class CheckboxColumn(Column):139"""Boolean checkbox column configuration."""140pass141142# Selectbox column configuration143class SelectboxColumn(Column):144"""Dropdown selection column configuration."""145def __init__(self, options, **kwargs):146"""147Parameters:148- options (list): Available options for selection149"""150151# Date and time column configurations152class DateColumn(Column):153"""Date column configuration."""154def __init__(self, min_value=None, max_value=None, format="YYYY-MM-DD", step=1, **kwargs):155"""156Parameters:157- min_value (date): Minimum date158- max_value (date): Maximum date159- format (str): Date format string160- step (int): Step size in days161"""162163class TimeColumn(Column):164"""Time column configuration."""165def __init__(self, min_value=None, max_value=None, format="HH:mm", step=60, **kwargs):166"""167Parameters:168- min_value (time): Minimum time169- max_value (time): Maximum time170- format (str): Time format string171- step (int): Step size in seconds172"""173174class DatetimeColumn(Column):175"""Datetime column configuration."""176def __init__(self, min_value=None, max_value=None, format="YYYY-MM-DD HH:mm", step=60, timezone=None, **kwargs):177"""178Parameters:179- min_value (datetime): Minimum datetime180- max_value (datetime): Maximum datetime181- format (str): Datetime format string182- step (int): Step size in seconds183- timezone (str): Timezone name184"""185186# Link column configuration187class LinkColumn(Column):188"""URL link column configuration."""189def __init__(self, validate=None, max_chars=None, display_text=None, **kwargs):190"""191Parameters:192- validate (str or callable): URL validation pattern or function193- max_chars (int): Maximum character count194- display_text (str or callable): Custom display text or function195"""196197# List column configuration198class ListColumn(Column):199"""List/array column configuration."""200pass201202# Image column configuration203class ImageColumn(Column):204"""Image display column configuration."""205pass206207# Chart column configurations208class LineChartColumn(Column):209"""Line chart column configuration."""210def __init__(self, y_min=None, y_max=None, **kwargs):211"""212Parameters:213- y_min (float): Minimum Y-axis value214- y_max (float): Maximum Y-axis value215"""216217class BarChartColumn(Column):218"""Bar chart column configuration."""219def __init__(self, y_min=None, y_max=None, **kwargs):220"""221Parameters:222- y_min (float): Minimum Y-axis value223- y_max (float): Maximum Y-axis value224"""225226class AreaChartColumn(Column):227"""Area chart column configuration."""228def __init__(self, y_min=None, y_max=None, **kwargs):229"""230Parameters:231- y_min (float): Minimum Y-axis value232- y_max (float): Maximum Y-axis value233"""234235# Progress column configuration236class ProgressColumn(Column):237"""Progress bar column configuration."""238def __init__(self, min_value=0, max_value=100, format=None, **kwargs):239"""240Parameters:241- min_value (float): Minimum progress value242- max_value (float): Maximum progress value243- format (str): Progress display format244"""245246# JSON column configuration247class JsonColumn(Column):248"""JSON data column configuration."""249pass250```251252## Usage Examples253254### Basic Data Display255256```python257import streamlit as st258import pandas as pd259import numpy as np260261# Create sample data262data = pd.DataFrame({263'Name': ['Alice', 'Bob', 'Charlie', 'David'],264'Age': [25, 30, 35, 28],265'Salary': [50000, 60000, 70000, 55000],266'Active': [True, True, False, True]267})268269# Display as interactive dataframe270st.subheader("Interactive DataFrame")271st.dataframe(data, use_container_width=True)272273# Display as static table274st.subheader("Static Table")275st.table(data.head(2))276```277278### Advanced DataFrame Configuration279280```python281# Configure columns with specific types and formatting282column_config = {283"Name": st.column_config.TextColumn(284"Employee Name",285help="Full name of employee",286max_chars=50,287required=True288),289"Age": st.column_config.NumberColumn(290"Age (years)",291help="Employee age in years",292min_value=18,293max_value=65,294step=1,295format="%d"296),297"Salary": st.column_config.NumberColumn(298"Annual Salary",299help="Annual salary in USD",300min_value=0,301format="$%d"302),303"Active": st.column_config.CheckboxColumn(304"Currently Active",305help="Whether employee is currently active"306)307}308309# Display with custom column configuration310edited_df = st.data_editor(311data,312column_config=column_config,313num_rows="dynamic",314use_container_width=True315)316317st.write("Edited data:", edited_df)318```319320### Metrics Dashboard321322```python323import random324325# Display key metrics with deltas326col1, col2, col3, col4 = st.columns(4)327328with col1:329st.metric(330label="Revenue",331value="$125,000",332delta="$12,000",333help="Monthly revenue with change from last month"334)335336with col2:337st.metric(338label="Users",339value="2,847",340delta="-15",341delta_color="inverse"342)343344with col3:345st.metric(346label="Conversion Rate",347value="3.2%",348delta="0.8%"349)350351with col4:352st.metric(353label="Churn Rate",354value="2.1%",355delta="-0.3%",356delta_color="inverse"357)358```359360### Data Editor with Row Management361362```python363# Sample product data364products = pd.DataFrame({365'Product': ['Widget A', 'Widget B', 'Widget C'],366'Price': [10.99, 15.99, 8.99],367'In Stock': [True, False, True],368'Category': ['Electronics', 'Home', 'Electronics']369})370371# Configure with selectbox for categories372config = {373'Category': st.column_config.SelectboxColumn(374'Product Category',375options=['Electronics', 'Home', 'Clothing', 'Books'],376required=True377),378'Price': st.column_config.NumberColumn(379'Price ($)',380min_value=0,381format='$%.2f'382)383}384385# Editable table with dynamic rows386edited_products = st.data_editor(387products,388column_config=config,389num_rows="dynamic", # Allow adding/removing rows390key="product_editor"391)392393# Show summary394st.write(f"Total products: {len(edited_products)}")395st.write(f"Total value: ${edited_products['Price'].sum():.2f}")396```397398### Selection Handling399400```python401# DataFrame with selection handling402selection = st.dataframe(403data,404selection_mode="multi-row",405on_select="rerun",406key="data_selection"407)408409if selection.selection.rows:410selected_data = data.iloc[selection.selection.rows]411st.write("Selected rows:")412st.dataframe(selected_data)413else:414st.write("No rows selected")415```