Introduction
Streamlit is an open-source Python library designed for quickly building interactive web applications with minimal effort. It is widely used in data science, machine learning, and business analytics due to its simplicity and powerful capabilities.
This guide provides an in-depth exploration of Streamlit’s features, architecture, and practical usage. We will cover installation, core functionalities, and examples of real-world applications. Additionally, we will include architecture diagrams to illustrate how Streamlit processes requests and renders components.
Understanding Streamlit’s Architecture
Streamlit follows a straightforward architecture that makes it easy to deploy applications. Below is a high-level overview:
User Input → Python Script → Streamlit Engine → Web UI (Browser)
Architecture Overview
- User Interaction: Users interact with widgets like sliders, buttons, and text inputs.
- Python Backend: Streamlit processes user input and executes Python code in real-time.
- Component Rendering: The framework dynamically updates the UI based on changes in state.
- Web Interface: The application is rendered in a web browser, enabling easy sharing and accessibility.
Installation and Setup
To start using Streamlit, install it using pip:
pip install streamlit
Verify installation by running:
streamlit hello
This command launches an interactive demo showcasing Streamlit’s capabilities.
Creating a Simple Streamlit App
Let’s create a basic app that displays a title, a slider, and a dynamically updating chart.
app.py
:
import streamlit as st
import numpy as np
import pandas as pd
import time
st.title("Interactive Data Visualization with Streamlit")
st.write("Adjust the slider to change the data range:")
slider_val = st.slider("Select Range", 10, 100, 50)
data = pd.DataFrame(np.random.randn(slider_val, 2), columns=['X', 'Y'])
st.line_chart(data)
Run the app with:
streamlit run app.py
Your web app will launch automatically in a browser.
Streamlit Components and Widgets
Streamlit provides a rich set of widgets to create interactive applications. Below are some commonly used components:
1. Text Elements
st.header("This is a Header")
st.subheader("This is a Subheader")
st.text("This is some text")
st.markdown("# Markdown Support")
2. Input Widgets
name = st.text_input("Enter your name")
if st.button("Greet"):
st.write(f"Hello, {name}!")
3. Charts and Graphs
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [10, 20, 25, 30])
st.pyplot(fig)
Real-World Application: Building a Stock Dashboard
We will now build a simple stock price dashboard using the yfinance
package.
Install Dependencies
pip install yfinance
stock_dashboard.py
:
import streamlit as st
import yfinance as yf
st.title("Stock Price Dashboard")
ticker = st.text_input("Enter Stock Ticker", "AAPL")
if st.button("Get Data"):
stock_data = yf.download(ticker, period='1mo')
st.line_chart(stock_data['Close'])
Run the app:
streamlit run stock_dashboard.py
Deploying Streamlit Apps
Streamlit apps can be deployed using Streamlit Cloud. Alternatively, you can deploy on AWS, Google Cloud, or Heroku.
Steps for Deployment
- Push Code to GitHub
- Sign in to Streamlit Cloud
- Create a New App and Connect to GitHub Repo
- Deploy!
Conclusion
Streamlit is an excellent tool for building data-driven applications with minimal effort. Its simple API, real-time updates, and support for various data visualization libraries make it a favorite among data scientists and analysts. This guide covered the basics of getting started, creating interactive applications, and deploying your app.
For more details, visit the Streamlit GitHub Repository.