找回密码
 立即注册
首页 业界区 安全 Streamlit入门 中文文档

Streamlit入门 中文文档

楞粳 2025-7-12 16:59:37
基础概念

使用 Streamlit 进行开发非常简单。首先,在普通的 Python 脚本中添加几条 Streamlit 命令,然后使用 streamlit run 命令来运行它:
  1. streamlit run your_script.py [-- script args]
复制代码
一旦按照上述方式运行脚本,本地的 Streamlit 服务器就会启动,您的应用程序将会在您默认的网络浏览器的新标签页中打开。该应用程序就是您的画布,您可以在其中绘制图表、文本、控件、表格等等。
在该应用程序中绘制的内容由您决定。例如,st.text 会将原始文本写入您的应用程序,而 st.line_chart 则会绘制一条折线图。
请参考 API 文档,以了解您可用的所有命令。
在传递脚本的自定义参数时,这些参数必须在两个连字符之后进行传递。否则,这些参数会被视为对 Streamlit 本身的参数。
另一种运行 Streamlit 的方式是将其作为 Python 模块来运行。在将像 PyCharm 这样的集成开发环境与 Streamlit 配合使用时,这种方式会非常有用:
  1. # Running
  2. python -m streamlit run your_script.py
  3. # is equivalent to:
  4. streamlit run your_script.py
复制代码
You can also pass a URL to streamlit run! This is great when combined with GitHub Gists.
For example:
  1. streamlit
  2. run https://raw.githubusercontent.com/streamlit/demo-uber-nyc-pickups/master/streamlit_app.py
复制代码
开发流程

每次您想要更新应用程序时,请先保存源文件。完成此操作后,Streamlit 会检测是否有更改,并询问您是否要重新运行应用程序。在屏幕的右上角选择“始终重新运行”,即可每次更改源代码时自动更新应用程序。
这能让您在一个快速的交互循环中进行操作:您输入一些代码,保存它,实时试运行,然后继续输入更多代码,保存并再次试运行,如此反复,直到您对结果满意为止。这种在编码与实时查看结果之间紧密相连的循环是 Streamlit 让您的生活更轻松的一种方式。
在开发 Streamlit 应用程序时,建议将编辑器窗口和浏览器窗口并排排列,以便同时查看代码和应用程序。来试试看吧!
自 Streamlit 版本 1.10.0 及更高版本起,Streamlit 应用程序无法在 Linux 发行版的根目录下运行。如果您尝试从根目录运行 Streamlit 应用程序,Streamlit 将抛出 FileNotFoundError: [Errno 2] No such file or directory 的错误。如需更多信息,请参阅 GitHub issue #5239。
如果您使用的是 Streamlit 1.10.0 或更高版本,您的主脚本应位于根目录之外的目录中。在使用 Docker 时,您可以使用 WORKDIR 命令来指定主脚本所在的目录。有关如何进行此操作的示例,请阅读  创建 Dockerfile。
数据流

Streamlit 的架构使您能够以编写普通 Python 脚本的方式来编写应用程序。要实现这一点,Streamlit 应用程序具有独特的数据流:每当需要在屏幕上更新内容时,Streamlit 都会从顶部到底部重新运行您的整个 Python 脚本。
这种情况可能会在以下两种情形下发生:

  • 每当您修改应用程序的源代码时。
  • 每当用户与应用程序中的小部件进行交互时。例如,当拖动滑块、在输入框中输入文本,或者点击按钮时。
每当通过 on_change(或 on_click)参数将回调函数传递给一个控件时,该回调函数总是会先于脚本的其余部分运行。有关回调函数 API 的详细信息,请参阅我们的 会话状态 API 参考指南。
为了使这一切实现快速且流畅的运行,Streamlit 在幕后为你承担了大量工作。在这个过程中,一个重要的角色是 @st.cache_data 装饰器,它能让开发者在应用程序重新运行时跳过某些耗时的计算。我们将在本页面的后面部分详细介绍缓存机制。
显示风格化的信息

在 Streamlit 应用程序中,有几种方式可以展示数据(表格、数组、数据框)。下面,您将了解到魔法命令和 st.write() 函数,它们可用于书写从文本到表格的各种内容。接下来,让我们来看看专门用于可视化数据的方法。
使用魔法

您还可以无需调用任何 Streamlit 方法即可向您的应用程序写入数据。Streamlit 支持“魔法命令”,这意味着您根本无需使用 st.write() 函数!要实际查看效果,请尝试以下代码片段:
  1. """
  2. # My first app
  3. Here's our first attempt at using data to create a table:
  4. """
  5. import streamlit as st
  6. import pandas as pd
  7. df = pd.DataFrame({
  8.     'first column': [1, 2, 3, 4],
  9.     'second column': [10, 20, 30, 40]
  10. })
  11. df
复制代码
只要 Streamlit 在同一行中看到一个变量或一个常量值,它就会自动使用 st.write() 函数将其写入你的应用程序中。如需了解更多信息,请参考关于 魔法命令的文档。
展示 Data frame

除了 魔法命令 之外,st.write() 是Streamlit 的“万能工具”。您可以将几乎任何内容传递给 st.write()
:文本、数据、Matplotlib 图形、Altair 图表等等。别担心,Streamlit 会自行处理并以正确的方式呈现这些内容。
  1. import streamlit as st
  2. import pandas as pd
  3. st.write("Here's our first attempt at using data to create a table:")
  4. st.write(pd.DataFrame({
  5.     'first column': [1, 2, 3, 4],
  6.     'second column': [10, 20, 30, 40]
  7. }))
复制代码
还有其他一些专门用于处理数据的功能,例如 st.dataframe() 和 st.table(),您也可以利用它们来展示数据。接下来让我们了解一下何时应使用这些功能,以及如何为数据框添加颜色和样式。
你可能会自问:“为什么我不总是使用 st.write() 函数呢?” 其实有以下几个原因:

  • 魔法和 st.write()
    会检查您传入的数据的类型,然后决定如何在应用程序中以最佳方式呈现这些数据。有时您可能希望以不同的方式呈现数据。例如,您可能不想将数据框以交互式表格的形式呈现,而是希望使用 st.table(df) 将其呈现为静态表格。
  • 第二个原因是,其他方法会返回一个可以使用和修改的对象,可以通过向其添加数据或替换数据来进行操作。
  • 最后,如果您使用更具体的 Streamlit 方法,可以传递额外的参数来定制其行为。
例如,让我们创建一个数据框,并使用 Pandas Styler 对象更改其格式。在这个例子中,您将使用 NumPy 生成一个随机样本,并使用 st.dataframe() 方法绘制一个交互式表格。
此示例使用 Numpy 生成随机样本,但您也可以使用 Pandas DataFrame、Numpy Array 或普通的 Python 数组。
  1. import streamlit as st
  2. import numpy as np
  3. dataframe = np.random.randn(10, 20)
  4. st.dataframe(dataframe)
复制代码
让我们以第一个示例为例,利用 Pandas 的 Styler 对象来突出显示交互式表格中的某些元素。
  1. import streamlit as st
  2. import numpy as np
  3. import pandas as pd
  4. dataframe = pd.DataFrame(
  5.     np.random.randn(10, 20),
  6.     columns=('col %d' % i for i in range(20)))
  7. st.dataframe(dataframe.style.highlight_max(axis=0))
复制代码
Streamlit 还提供了一种生成静态表格的方法:st.table() 。
  1. import streamlit as st
  2. import numpy as np
  3. import pandas as pd
  4. dataframe = pd.DataFrame(
  5.     np.random.randn(10, 20),
  6.     columns=('col %d' % i for i in range(20)))
  7. st.table(dataframe)
复制代码
展示图表

Streamlit
支持多种流行的数据图表库,例如 Matplotlib、Altair、deck.gl 等。在本节中,您将为您的应用程序添加一个柱状图、折线图和一张地图。
绘制折线图

您可以通过调用
st.line_chart()
函数轻松地将折线图添加到您的应用程序中。我们将使用 NumPy 生成一个随机样本,然后将其绘制出来。
  1. import streamlit as st
  2. import numpy as np
  3. import pandas as pd
  4. chart_data = pd.DataFrame(
  5.     np.random.randn(20, 3),
  6.     columns=['a', 'b', 'c'])
  7. st.line_chart(chart_data)
复制代码
绘制地图

使用 st.map()
函数,您可以将数据点显示在地图上。让我们使用 NumPy 生成一些示例数据,并将其绘制在旧金山的地图上。
  1. import streamlit as st
  2. import numpy as np
  3. import pandas as pd
  4. map_data = pd.DataFrame(
  5.     np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],
  6.     columns=['lat', 'lon'])
  7. st.map(map_data)
复制代码
控件

当您将数据或模型调整到您想要探索的状态后,就可以添加诸如 st.slider()、st.button() 或 st.selectbox() 这样的组件了。操作起来非常简单——将这些组件视为变量即可:
[code]import streamlit as stx = st.slider('x')  #
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册