问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Streamlit入门教程:数据科学家的Web开发利器

创作时间:
作者:
@小白创作中心

Streamlit入门教程:数据科学家的Web开发利器

引用
1
来源
1.
https://juejin.cn/post/7483039833385582611

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 安装成功。

如果没有主动打开浏览器,转到终端中显示的本地主机地址,通常是

http://localhost:8501

,在浏览器中输入以上地址。

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  

浏览器显示如下

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号