Streamlit是一个开源的Python库,旨在帮助开发人员轻松创建数据科学和机器学习的Web应用程序。它允许您只需几行Python代码即可构建交互式Web应用程序,因此常用于创建数据驱动的应用程序、仪表板和原型。Streamlit以其简单性而闻名,通常被数据科学家和工程师用于快速分享他们的工作或为他们的数据分析创建用户友好的界面。
以下是与Streamlit相关的一些关键特点和概念:
简单的API:Streamlit提供了非常直观和简单的API,使您可以仅使用几行Python代码创建Web应用程序。您可以使用简单的函数调用创建交互元素,如滑块、文本输入和按钮。
响应式更新:Streamlit是“响应式”的,这意味着每当您更改输入参数或变量时,它会自动更新Web应用程序。您无需编写大量的事件处理代码来更新用户界面。
数据可视化:您可以使用Streamlit显示图表、绘图和表格,这使其非常适合数据分析和可视化任务。它可以与Matplotlib、Plotly和Altair等库很好地配合使用。
小部件:Streamlit提供各种小部件,如滑块、文本输入、选择框和按钮,用于与数据交互并更新应用程序内容。
自定义组件:您可以为Streamlit创建自定义组件,以扩展其功能并为您的应用程序添加独特的特性。
部署:Streamlit应用程序可以轻松部署在各种平台上,包括本地计算机、云服务(如Heroku或AWS)或专用托管服务。Streamlit Sharing也是一个官方平台,用于免费的应用程序托管。
要开始使用Streamlit,您需要使用pip进行安装:
pip install streamlit
安装完成后,以下是一个简单的Streamlit应用程序示例,用于绘制图表:
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
st.title("简单的csv文件内容展示程序")
# 侧边栏与用户输入
st.sidebar.header("用户输入")
file = st.sidebar.file_uploader("上传CSV文件", type=["csv"])
if file is不 None:
data = pd.read_csv(file)
st.write(data)
# 创建图表
st.header("数据可视化")
fig, ax = plt.subplots()
ax.bar(data['Category'], data['Value'])
st.pyplot(fig)
fig, ax = plt.subplots()
: 这一行创建了一个图形(fig
)和一个坐标轴(ax
)。plt.subplots()
函数创建一个新的图形对象(fig
)和一个包含一个坐标轴(ax
)的子图。子图是图形中的可绘制区域,坐标轴则是子图上的坐标轴,您可以在坐标轴上绘制图表元素。ax.bar(data['Category'], data['Value'])
: 这一行使用ax
坐标轴对象的bar
方法创建柱状图。它接受两参数:X轴上的数据(data['Category']
)和Y轴上的数据(data['Value']
)。这将在图形中创建一组柱形,每个柱形的高度由data['Value']
确定,X轴上的位置由data['Category']
确定。
您可以使用以下命令运行您的Streamlit应用程序:
streamlit run your_app.py
将“your_app.py”替换为您的Python脚本的名称。
结果展示
应用示例:单词释义查看
创建一个Python脚本,例如 vocab_app.py
,然后将以下代码粘贴到脚本中:
import streamlit as st
import pandas as pd
# 创建一个Streamlit侧边栏
st.sidebar.title("英语单词学习应用")
# 在侧边栏中添加一个文本输入框,用于输入新单词
new_word = st.sidebar.text_input("输入新单词:")
# 加载或创建一个存储单词的数据框
if 'vocab' not in st.session_state:
st.session_state.vocab = pd.DataFrame(columns=['单词', '释义'])
# 检查是否输入了新单词
if new_word:
new_definition = st.sidebar.text_input("输入释义:")
if new_definition:
st.session_state.vocab = st.session_state.vocab.append({'单词': new_word, '释义': new_definition}, ignore_index=True)
# 在主界面中显示当前的单词列表
st.title("当前的单词列表:")
st.dataframe(st.session_state.vocab)
# 在主界面中添加一个文本框,用于练习已有的单词
word_to_practice = st.text_input("输入要练习的单词:")
# 在主界面中添加一个按钮,用于检查单词的释义
if st.button("检查释义"):
word_definition = st.session_state.vocab[st.session_state.vocab['单词'] == word_to_practice]['释义'].values
if len(word_definition) > 0:
st.write(f"单词 '{word_to_practice}' 的释义是: {word_definition[0]}")
else:
st.write("未找到该单词的释义。")
# 在主界面中添加一个按钮,用于清空单词列表
if st.button("清空单词列表"):
st.session_state.vocab = pd.DataFrame(columns=['单词', '释义'])
st.write("单词列表已清空。")
保存脚本并在终端中运行它:
streamlit run vocab_app.py
这将启动Streamlit应用并在浏览器中打开。你可以在侧边栏中输入新单词和释义,然后点击“添加”按钮将其添加到单词列表中。在主界面中,你可以输入要练习的单词,然后点击“检查释义”按钮来查看单词的释义。你还可以点击“清空单词列表”按钮来清空单词列表。