Mito
Mito for Streamlit
  • Mito Documentation
  • Getting Started
    • Installing Mito
      • Fixing Common Install Errors
      • Installing Mito in a Docker Container
      • Installing Mito for Streamlit
      • Installing Mito for Dash
      • Installing Mito in a Jupyter Notebook Directly
      • Installing Mito in Vertex AI
      • Setting Up a Virtual Environment
  • Data Copilot
    • Data Copilot Core Concepts
    • Agent
    • Chat
    • Autocomplete
    • Smart Debugging
    • Configuration Options
    • AI Data Usage FAQ
  • Apps (Beta)
    • Mito Apps
  • Mito Spreadsheet
    • Core Concepts
    • Creating a Mitosheet
      • Open Existing Virtual Environments
    • Importing Data
      • Importing CSV Files
      • Importing from Excel Files
      • Importing Dataframes
      • Importing from a remote drive
      • Import: Generated UI from any Python Function
      • Importing from other sources
    • Graphing
      • Graph Creation
      • Graph Styling
      • Graph Export
    • Pivoting/Group By
    • Filter
      • Filter By Condition
      • Filter By Value
    • Mito AI
    • Summary Statistics
    • Type Changes
    • Spreadsheet Formulas
      • Custom Spreadsheet Functions
      • Formula Reference
      • Using VLOOKUP
    • Editing Individual Cells
    • Combining Dataframes
      • Merge (horizontal)
      • Concatenate (horizontal)
      • Anti-merge (unique)
    • Sort Data
    • Split Text to Columns
    • Deleting Columns
    • Deleting Rows
    • Column Headers
      • Editing Column Headers
      • Promote Row to Header
    • Deduplicate
    • Fill NaN Values
    • Transpose
    • Reset Index
    • Unpivot a Dataframe (Melt)
    • Formatting
      • Column Formatting
      • Dataframe Colors
      • Conditional Formatting
    • Exporting Data
      • Download as CSV
      • Download as Excel
      • Generate code to create Excel and CSV reports
    • Using the Generated Code
      • Turn generated code into functions
    • Changing Imported Data
    • Code Snippets
    • Custom Editors: Autogenerate UI from Any Function
    • Find and Replace
    • Bulk column header edits
    • Code Options
    • Scheduling your Automation
    • Keyboard Shortcuts
    • Upgrading Mito
    • Enterprise Logging
  • Mito for Streamlit
    • Getting Started with Mito for Streamlit
    • Streamlit Overview
    • Create a Mito for Streamlit App
    • API Reference
      • Understanding import_folder
      • RunnableAnalysis class
      • Column Definitions
    • Streamlit App Gallery
    • Experienced Streamlit Users
    • Common Design Patterns
      • Deploying Mito for Streamlit in a Docker Image
      • Using Mito for Final Mile Data Cleaning
  • Mito for Dash
    • Getting Started
    • Dash Overview
    • Your First Dash App with Mito
    • Mito vs. Other Dash Components
    • API Reference
      • Understanding import_folder
    • Dash App Gallery
    • Common Design Patterns
      • Refresh Sheet Data Periodically
      • Change Sheet Data from a Select
      • Filter Other Elements to Data Selected in Mito
      • Graph New Data after Edits to Mito
      • Set Mito Spreadsheet Theme
  • Tutorials
    • Pass a dataframe into Mito
    • Create a line chart of time series data
    • Delete Columns with Missing Values
    • Split a column on delimiter
    • Rerun analysis on new data
    • Calculate the difference between rows
    • Calculate each cell's percent total of column
    • Import multiple tables from one Excel sheet
    • Share Mito Spreadsheets Across Users
  • Misc
    • Release Notes
      • April 15 - Now Streaming (0.1.18)
      • March 21 - Smarter, Faster, Stronger Agents
      • February 25 - Agent Mode QoL Improvements
      • February 18 - Mito Agents
      • January 2nd - Inline Completions Arrive
      • December 6th - Smarter Workflow
      • November 27th - @ Mentions, Mito AI Server
      • November 4th, 2024 - Hello Mito AI
      • October 8, 2024 - JupyterLab 4
      • Aug 29th, 2024
      • June 12, 2024
      • March 19, 2024
      • March 13th, 2024
      • February 12th, 2024: Graphing Improvements
      • January 25th, 2024
      • January 5th, 2023: Keyboard Shortcuts
      • December 6, 2023: New Context Menu
      • November 28, 2023: Mito's New Toolbar
      • November 7, 2023: Multiplayer Dash
      • October 23, 2023: RunnableAnalysis class
      • October 16, 2023: Mito for Dash, Custom Editors
      • September 29, 2023: VLOOKUP and Find and Replace!
      • September 7, 2023
      • August 2, 2023: Mito for Streamlit!
      • July 10, 2023
      • May 31, 2023: Mito AI Recon
      • May 19, 2023: Mito AI Chat!
      • April 27, 2023: Generate Functions, Performance improvements, bulk column header transformations
      • April 18, 2023: Cell Editor Improvements, BYO Large Language Model, and more
      • April 10, 2023: AI Access, Excel-like Cell Editor, Performance Improvements
      • April 5, 2023: Range formulas, Pandas 2.0, Snowflake Views
      • March 29, 2023: Excel Range Import Improvements
      • March 14, 2023: Mito AI, Public Interface Versioning
      • February 28, 2023: In-place Pivot Errors
      • February 7, 2023: Excel-like Formulas, Snowflake Import
      • January 23, 2023: Excel range importing
      • January 8, 2023: Custom Code snippets
      • December 26, 2022: Code snippets and bug fixes
      • December 12, 2022: Group Dates in Pivot Tables, Reduced Dependencies
      • November 15, 2022: Filter in Pivot
      • November 9, 2022: Import and Enterprise Config
      • October 31, 2022: Replay Analysis Improvements
      • Old Release Notes
      • August 10, 2023: Export Formatting to Excel
    • Mito Enterprise Features
    • FAQ
    • Terms of Service
    • Privacy Policy
  • Mito
Powered by GitBook

© Mito

On this page
  • How to add a custom importer into Mito
  • Adding a custom importer to Mito in Streamlit
  • Supported Types
  • Examples

Was this helpful?

  1. Mito Spreadsheet
  2. Importing Data

Import: Generated UI from any Python Function

Automatically generate UI's to import data from your enterprise's databases.

PreviousImporting from a remote driveNextImporting from other sources

Last updated 9 months ago

Was this helpful?

This is a feature. to extend your spreadsheet with additional spreadsheet functions.

The Mito spreadsheet is built to be extensible to your teams use case. Mito users can augment the data analysis capabilities of their team by incorporating existing Python functions into their sheet.

Namely, any function that returns a dataframe can be exposed to a Mito user within a spreadsheet, automatically. This allows less-technical teammates to benefit from all the Python code written by the programmers in your org, without these less-technical folks needing to learn to code! Also, it requires no additional UI building by you!

See also:

How to add a custom importer into Mito

Imagine we have a function that takes some inputs and returns a dataframe:

def get_loan_data(date: str, include_duplicates: bool) -> pd.DataFrame:
    ...

You can simply pass this to the mitosheet call in a notebook or Streamlit:

# In a notebook
mitosheet.sheet(importers=[get_loan_data])

# In Streamlit
spreadsheet(importers=[get_loan_data])

Then, this function will be accessible in the Import dropdown within the mitosheet, where an option for Get Loan Data will appear.

Selecting this option will open a UI this is automatically generated for this function:

Adding a custom importer to Mito in Streamlit

Supported Types

For Mito to automatically generate the correct UI for your function, it should have Python types attached to it. The currently supported types:

Type
UI Element

str

A string input.

int

A number input. The input will be cast with the int function.

float

A number input. The input will be cast with the float function.

bool

A toggle. The input will be cast with the bool function.

pd.DataFrame

A dataframe select, allowing users to select from the dataframes in Mito.

List[int]

A list of number inputs. Each input will be cast with the int function.

Dict[str, str]

A pair of string inputs.

ColumnHeader

unlabeled

An input that will be evaluated with the Python eval function.

Understanding the ColumnHeader type

The ColumnHeader type can be imported from the Mito extension package, and tells Mito to generate a UI that allows a user to select a specific column from the preceding dataframe in the auto-generated UI.

import pandas as pd
from mitosheet.extensions.v1 import ColumnHeader

def extension_function(df: pd.DataFrame, column_header: ColumnHeader):
    # insert function here

Notably, any ColumnHeader parameter will error if it is not preceeded by a pd.DataFrame parameter -- as it is unclear which dataframe the ColumnHeader is referencing!

Examples

Using the List[int] data type to let users filter a dataframe to relevant rows.

import mitosheet
import pandas as pd
from typing import List

def get_fund_data(fund_ids: List[int]):
    fund_performances = pd.DataFrame({
        'Fund ID': [1,2,3,4,5,6,7,8,9],
        'June Returns': [.1,.2,.3,.4,.5,.6,.7,.8,.9],
        'July Returns': [.1,.2,.3,.4,.5,.6,.7,.8,.9]
    })
    
    # Filter the dataframe to only include the fund_ids set by the user
    filtered_fund_data = fund_performances[fund_performances['Fund ID'].isin(fund_ids)]
    
    return filtered_fund_data
    
mitosheet.sheet(importers=[get_fund_data])

Simply use the importers parameter to the spreadsheet component in Streamlit. See more in the

A column select, referencing the nearest pd.DataFrame type.

Streamlit API reference.
See below.
Mito Enterprise
Upgrade
bring your own spreadsheet functions.
The new import option is created.
The interface generated automatically by this Python function.