本文将深入探讨五个实用技巧,助您在短短几分钟内,轻松搭建出功能强大且用户友好的Streamlit仪表板。

图片来源:编辑 | ChatGPT
#引言
Streamlit 是一个基于Python的框架,能够以最少的代码创建用户友好的Web应用程序。它主要面向数据专业人士和开发人员,常用于数据探索、构建仪表板以及快速原型化机器学习应用。该框架提供简单、高级的API,易于使用,并包含许多用于开发实用仪表板的内置功能。然而,许多人仍停留在基础使用层面,未能充分发挥Streamlit的潜力。
正因如此,本文将详细介绍五个不同的技巧,帮助您在几分钟内构建出真正有用的Streamlit仪表板。
#1. 巧用缓存机制
Streamlit框架的特性是,每当输入发生变化时,它会从头开始重新运行整个脚本。这意味着如果我们不必要地重复数据加载或模型加载等操作,计算成本将变得非常高昂。
通过巧妙运用缓存,我们可以显著减少操作时间并降低计算内存消耗,因为相同的对象可以被重复利用。以下是代码实现的示例:
@st.cache_data
def load_data():
return pd.read_csv("large_dataset.csv")
@st.cache_resource
def load_model():
from sklearn.ensemble import RandomForestClassifier
return RandomForestClassifier()
st.cache_data 最适合用于数据操作,例如加载CSV文件;而 st.cache_resource 则更适用于持久化资源,如机器学习模型或数据库连接。
有效利用缓存,即使面对大型数据集或复杂模型,也能让您的仪表板处理速度更快。
#2. 批量处理输入
正如前文所述,每当输入发生变化时,Streamlit都会从头开始处理脚本。在许多情况下,如果每次单一输入更改都导致整个流程重新运行,拥有多个输入的工作流将变得非常繁琐。
通过使用 st.form,我们可以将多个小部件及其操作进行分组,这样它们只会在用户点击提交按钮时才进行更新。以下是代码实现的示例:
with st.form("filters"):
min_value = st.slider("Minimum Value", 0, 100, 10)
max_value = st.slider("Maximum Value", 0, 100, 90)
submitted = st.form_submit_button("Apply")
if submitted:
st.write(f"Filtering data between {min_value} and {max_value}")
上述代码有效地避免了不必要的重复计算,并赋予用户对仪表板刷新时机的控制权,尤其是在需要批量处理输入时,这一功能显得尤为重要。
#3. 持久化应用状态
有时,当输入发生变化时,我们希望保留某些应用状态,例如计数器、筛选变量或身份验证标志。这种情况下,使用缓存可能显得过于笨重,因此我们可以转而采用 st.session_state 方法来持久化状态。
通过 st.session_state,我们可以在多次重新运行中保持变量的持久性,甚至可以交互式地更新它们,这使得整个工作流程更加顺畅,并且在内存使用上更加高效。以下是代码实现的示例:
if "counter" not in st.session_state:
st.session_state.counter = 0
if st.button("Increment"):
st.session_state.counter += 1
st.write(f"Counter: {st.session_state.counter}")
上述代码在 st.session_state 中初始化了一个变量,确保它在应用程序重新运行时依然存在,从而极大地优化了工作流程。
#4. 突出显示关键指标
在使用仪表板时,最重要的一点是能够清晰地展示最核心的信息。对于许多业务用户和非技术用户而言,他们希望首先看到重要的数字,而只有在他们选择进一步探索时,才查看支持性的详细信息。
通过使用 st.metric,我们可以将关键绩效指标(KPI)以简洁的卡片形式呈现。这个函数使得仪表板能够有效地展示用户增长、收入、错误率等各类KPI。以下是代码实现的示例:
st.metric("活跃用户", 1234, "+134")
上述代码将显示一个“活跃用户”的KPI卡片,并带有+134的积极变化。通过这种方式,我们只需一行代码即可让仪表板变得更加实用。
#5. 充分利用社区组件
Streamlit的核心库虽然能满足大多数使用场景,但有时您可能需要比现有功能更高级的交互性。这时,社区组件就派上了用场。这些是由Streamlit社区开发的第三方扩展,可以轻松安装到您的Python环境中。
社区组件提供了许多实用的功能,例如可编辑的表格 (streamlit-aggrid)、交互式地图 (streamlit-folium)、聊天用户界面 (streamlit-chat) 等等。这意味着您可以轻松升级仪表板的功能和交互体验。
建议访问并探索那些对您的工作有益的社区组件。
#总结
Streamlit是一个功能强大的Python框架,尤其适合开发人员和数据专业人士构建Web应用程序。它易于上手,但仍有许多方法可以优化其使用体验,从而创建出更优秀的仪表板。
在本文中,我们探讨了五种在几分钟内构建实用Streamlit仪表板的不同方法,包括利用缓存机制、持久化应用状态,以及充分发挥社区组件的潜力。
希望这些技巧能对您有所帮助!
