Streamlit入门教程:数据科学家的Web开发利器
Streamlit入门教程:数据科学家的Web开发利器
Streamlit是一个为数据科学家和机器学习工程师量身打造的Python库,它提供了丰富的UI组件,使得开发者无需掌握前端技术就能快速构建数据科学和机器学习的Web交互界面。本文将详细介绍Streamlit的基本使用方法,包括安装、文本展示、代码展示等功能。
背景
作为饭店的大厨,饭菜已经烧好了,但现在服务员正忙,没人端给客人。
作为传统的作家,作品已经写好了,但是没有出版社愿意出版。
经过几日的奋战,你的数据分析的结果已经有了,但前端工程师正忙,没空对接和呈现你的数据。
你作为数据科学家/机器学习工程师,html、CSS、JS 都不会,平时主要使用 Python。这时候你会发现,Streamlit 简直是为你量身定做的,通过简单的几行代码,就可以完成 web 主要元素的呈现。不需要前端工程师的帮助,可以构建数据科学和机器学习的 web 交互界面。仅使用 Python 语言,就达到了全栈工程师 70-80% 的效果。
streamlit 的一大优势就是学习成本低,有非常多现成的组件——图表(折线图、条形图、面积图等)、按钮(普通按钮、单选按钮、下拉按钮等)、输入框(单行文本、多行文本)、日期选择、文件上传、侧边栏、选项卡等。而且以上众多组件,基本一两行的代码即可实现。
传统前端开发要自己写 HTML、CSS、JS,像雕刻木头,需要精准打磨每个细节。Streamlit 提供现成的 UI 组件,就像乐高积木,直接拼装就能得到一个完整的应用。
streamlit 安装
需要确保已安装 Python。在命令行中输入
pip install streamlit
然后在命令行中执行
streamlit hello
执行后,将自动打开以下界面,表示 streamlit 安装成功。
如果没有主动打开浏览器,转到终端中显示的本地主机地址,通常是
,在浏览器中输入以上地址。
streamlit 基本展示类型-文本类
如同建筑行业的钢筋水泥,文本元素是web应用的最基本内容。这里的文本类元素包括:标题、章节、普通文本、markdown、代码等。
基础文本类展示
下面代码展示大标题、章节、小节、文本内容在streamlit的编写方式。
# 新建 st_text.py 的文件
import streamlit as st
import streamlit as st
st.title("这是大标题", help="这是大标题的帮助信息")
st.header("这是章节标题")
st.header("这是章节标题,带分割线", divider="gray")
# divider 表示分割线,默认为False
st.header("One", divider=True, help="这是章节的帮助信息")
st.header("Two", divider=True)
st.header("Three", divider=False)
st.header("Four", divider=True)
st.subheader("这是小节标题")
st.subheader("这是小节标题,带分割线", divider="gray")
# divider 表示分割线,默认为False
st.subheader("One", divider=True, help="这是小节的帮助信息")
st.subheader("Two", divider=False)
st.subheader("Three", divider=True)
st.subheader("Four", divider=True)
st.text("这是文本,一般内容比较多。。。", help="这是文本的帮助信息")
然后在命令行中执行
streamlit run st_text.py
浏览器中将显示如下内容:
代码展示
在streamlit中,使用 code() 方法展示不同编程语言的代码块。
# 新建 st_code.py 文件
import streamlit as st
st.subheader("python代码块")
python_code = '''
def hello():
print("Hello, World!")
print("名句:骐骥一跃,不能十步;驽马十驾,功在不舍;锲而舍之,朽木不折;锲而不舍,金石可镂。")
hello()
'''
st.code(python_code, language=None)
# python_code是要显示的代码内容
st.code(python_code)
st.code(python_code, language='python')
# language 指定代码按哪种编码语言显示
st.code(python_code, language='python', line_numbers=True, wrap_lines=True)
# line_numbers 是否显示行号,默认为 False
st.code(python_code, language='python', line_numbers=True, wrap_lines=False)
# wrap_lines 是否换行显示,默认为 False
st.subheader("Java代码块")
java_code = '''
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
'''
st.code(java_code, language='java')
st.subheader("JS代码块")
javaScript_code = '''
function hello() {
console.log("Hello, World!");
}
hello();
'''
st.code(javaScript_code, language='javascript')
在命令行中输入
streamlit run st_code.py
浏览器显示内容如下:
说明文本
相比于正常的文本,说明的文字会更小一些。
# 新建 st_caption.py 文件
import streamlit as st
st.header("这是一个章节")
st.subheader("这是一个小节")
st.text("这是一个普通文本")
st.caption('这是一个说明文本')
在命令环境中执行
streamlit run st_caption.py
浏览器显示如下