Skip to content

themindfuldude/2024-streamlit-cheat-sheet-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

2024 Streamlit Cheat Sheet

Streamlit App

2024 Streamlit Cheatsheet App v1.31.0 logomark_website

Code is responsive on mobile devices.

LAUNCH APP: https://2024-app-cheat-sheet-app-ewxybnuwqx4qg64fcelqqd.streamlit.app/

v1.31.0 April 2024

Author:

Thanks to : https://github.com/daniellewisDL

  • For his 2023 version of the code

Version

  • Based on 2024 Streamlit v1.31.0
  • Python 3.11

How to install the app locally

  • Download and install Git, Python 3.11, Miniconda, Cursor (VSCode) ide:

          https://git-scm.com/downloads
          https://www.python.org/downloads/release/python-3118/
          https://docs.anaconda.com/free/miniconda/index.html
          https://cursor.sh/ (My favorite Free AI Co-Pilot VS Studio Code based)
          https://code.visualstudio.com/
    

Conda Virtual Environment Setup

  • In your Terminal Window Type the conda create command below and press enter:

          conda create --name my-app python=3.11            
          Example: create --name strmlit-cht python=3.11
    
  • To activate the conda virtual environment Type the conda activate command and press enter:

         conda activate my-app
         Example: conda activate strmlit-cht 
    
  • To deactivate a Conda Virtual Environment Type the command below and press enter:

      conda deactivate 
    

Clone the repository code.

  • In your Terminal Window Type the command below and press enter:

          git clone https://github.com/themindfuldude/2024-streamlit-cheat-sheet-app.git
    

Pip install dependencies.

  • In your Terminal Window Type the command below and press enter:

          pip install pandas plotly streamlit 
    

MAC only: For even better performance, install the Watchdog module:

  • In your Terminal Window Type the command below and press enter:

          xcode-select --install
          pip install watchdog
    

Run the app

  • In your Terminal Window Type the command below and press enter:

          streamlit run nameofyourappfile.py
    

Streamlit Cheat Sheet Content

Magic commands

# Magic commands implicitly `st.write()`
''' _This_ is some __Markdown__ '''
a=3
'dataframe:', data

Display text

st.write("Most objects") # df, err, func, keras!
st.write(["st", "is <", 3]) # see *
st.write_stream(my_generator)
st.write_stream(my_llm_stream)

st.text("Fixed width text")
st.markdown("_Markdown_") # see *
st.latex(r""" e^{i\pi} + 1 = 0 """)
st.title("My title")
st.header("My header")
st.subheader("My sub")
st.code("for i in range(8): foo()")

# * optional kwarg unsafe_allow_html = True

Display data

st.dataframe(my_dataframe)
st.table(data.iloc[0:10])
st.json({"foo":"bar","fu":"ba"})
st.metric("My metric", 42, 2)

Display media

st.image("./header.png")
st.audio(data)
st.video(data)
st.video(data, subtitles="./subs.vtt")

Columns

col1, col2 = st.columns(2)
col1.write('Column 1')
col2.write('Column 2')

# Three columns with different widths
col1, col2, col3 = st.columns([3,1,1])
# col1 is wider
              
# Using 'with' notation:
>>> with col1:
>>>     st.write('This is column 1')

Tabs

# Insert containers separated into tabs:
>>> tab1, tab2 = st.tabs(["Tab 1", "Tab2"])
>>> tab1.write("this is tab 1")
>>> tab2.write("this is tab 2")

# You can also use "with" notation:
>>> with tab1:
>>>   st.radio('Select one:', [1, 2])

Control flow

# Stop execution immediately:
st.stop()
# Rerun script immediately:
st.experimental_rerun()

# Group multiple widgets:
>>> with st.form(key='my_form'):
>>>   username = st.text_input('Username')
>>>   password = st.text_input('Password')
>>>   st.form_submit_button('Login')

Personalize apps for users

# Show different content based on the user's email address.
>>> if st.user.email == '[email protected]':
>>>    display_jane_content()
>>> elif st.user.email == '[email protected]':
>>>    display_adam_content()
>>> else:
>>>    st.write("Please contact us to get access!")

Display interactive widgets

st.button('Hit me')
st.data_editor('Edit data', data)
st.checkbox('Check me out')
st.radio('Pick one:', ['nose','ear'])
st.selectbox('Select', [1,2,3])
st.multiselect('Multiselect', [1,2,3])
st.slider('Slide me', min_value=0, max_value=10)
st.select_slider('Slide to select', options=[1,'2'])
st.text_input('Enter some text')
st.number_input('Enter a number')
st.text_area('Area for textual entry')
st.date_input('Date input')
st.time_input('Time entry')
st.file_uploader('File uploader')
st.download_button('On the dl', data)
st.camera_input("一二三,茄子!")
st.color_picker('Pick a color')

# Use widgets\' returned values in variables
>>> for i in range(int(st.number_input('Num:'))): foo()
>>> if st.sidebar.selectbox('I:',['f']) == 'f': b()
>>> my_slider_val = st.slider('Quinn Mallory', 1, 88)
>>> st.write(slider_val)

# Disable widgets to remove interactivity:
>>> st.slider('Pick a number', 0, 100, disabled=True)

Build chat-based apps

# Insert a chat message container.
>>> with st.chat_message("user"):
>>>    st.write("Hello 👋")
>>>    st.line_chart(np.random.randn(30, 3))

# Display a chat input widget.
>>> st.chat_input("Say something")  

Mutate data

# Add rows to a dataframe after showing it.
>>> element = st.dataframe(df1)
>>> element.add_rows(df2)

# Add rows to a chart after showing it.
>>> element = st.line_chart(df1)
>>> element.add_rows(df2)

Display code

st.echo()
>>> with st.echo():
>>>     st.write('Code will be executed and printed')

Placeholders, help, and options

# Replace any single element.
>>> element = st.empty()
>>> element.line_chart(...)
>>> element.text_input(...)  # Replaces previous.

# Insert out of order.
>>> elements = st.container()
>>> elements.line_chart(...)
>>> st.write("Hello")
>>> elements.text_input(...)  # Appears above "Hello".

st.help(pandas.DataFrame)
st.get_option(key)
st.set_option(key, value)
st.set_page_config(layout='wide')
st.experimental_show(objects)
st.experimental_get_query_params()
st.experimental_set_query_params(**params)

Connect to data sources

st.experimental_connection('pets_db', type='sql')
conn = st.experimental_connection('sql')
conn = st.experimental_connection('snowpark')

>>> class MyConnection(ExperimentalBaseConnection[myconn.MyConnection]):
>>>    def _connect(self, **kwargs) -> MyConnection:
>>>        return myconn.connect(**self._secrets, **kwargs)
>>>    def query(self, query):
>>>       return self._instance.query(query)

Optimize performance

Cache data objects

# E.g. Dataframe computation, storing downloaded data, etc.
>>> @st.cache_data
... def foo(bar):
...   # Do something expensive and return data
...   return data
# Executes foo
>>> d1 = foo(ref1)
# Does not execute foo
# Returns cached item by value, d1 == d2
>>> d2 = foo(ref1)
# Different arg, so function foo executes
>>> d3 = foo(ref2)
# Clear all cached entries for this function
>>> foo.clear()
# Clear values from *all* in-memory or on-disk cached functions
>>> st.cache_data.clear()

Cache global resources

# E.g. TensorFlow session, database connection, etc.
>>> @st.cache_resource
... def foo(bar):
...   # Create and return a non-data object
...   return session
# Executes foo
>>> s1 = foo(ref1)
# Does not execute foo
# Returns cached item by reference, s1 == s2
>>> s2 = foo(ref1)
# Different arg, so function foo executes
>>> s3 = foo(ref2)
# Clear all cached entries for this function
>>> foo.clear()
# Clear all global resources from cache
>>> st.cache_resource.clear()

Deprecated caching

>>> @st.cache
... def foo(bar):
...   # Do something expensive in here...
...   return data
>>> # Executes foo
>>> d1 = foo(ref1)
>>> # Does not execute foo
>>> # Returns cached item by reference, d1 == d2
>>> d2 = foo(ref1)
>>> # Different arg, so function foo executes
>>> d3 = foo(ref2)

Display progress and status

# Show a spinner during a process
>>> with st.spinner(text='In progress'):
>>>   time.sleep(3)
>>>   st.success('Done')

# Show and update progress bar
>>> bar = st.progress(50)
>>> time.sleep(3)
>>> bar.progress(100)

st.balloons()
st.snow()
st.toast('Mr Stay-Puft')
st.error('Error message')
st.warning('Warning message')
st.info('Info message')
st.success('Success message')
st.exception(e)

Other key parts of the API

State API
Theme option reference
Components API reference