『玩转Streamlit』--环境配置
尽管Streamlit的使用非常直观,但正确的环境配置对于充分发挥其潜力仍然至关重要。
本篇将介绍如何从头开始配置Streamlit环境,以及Streamlit开发过程中常用的几个命令。
最后通过一个简单的示例演示开发Streamlit应用的过程。
1. 安装
Streamlit是纯Python的框架,只依赖Python环境,
目前最新的Streamlit v1.39版本,需要Python3.8及以上的版本。
Streamlit已经发布到pypi,使用pip安装非常简单。
pip install streamlit
安装完成后,验证是否安装成功使用下面的命令:
streamlit hello
这个Streamlit中自带的示例工程,如果安装成功,执行之后会自动打开浏览器,
在http://localhost:8501/显示示例工程。

一共有4个Demo,可以从左半边的菜单中点开感受下Streamlit的魅力。
2. 常用子命令
Streamlit子命令不多,通过--help参数可以查看。
$ streamlit --help
Usage: streamlit [OPTIONS] COMMAND [ARGS]...
Try out a demo with:
$ streamlit hello
Or use the line below to run your own script:
$ streamlit run your_script.py
Options:
--log_level [error|warning|info|debug]
--version Show the version and exit.
--help Show this message and exit.
Commands:
activate Activate Streamlit by entering your email.
cache Manage the Streamlit cache.
config Manage Streamlit's config settings.
docs Show help in browser.
hello Runs the Hello World script.
help Print this help message.
run Run a Python script, piping stderr to Streamlit.
version Print Streamlit's version number.
最常用的是run子命令,这是用来执行Streamlit App的,run子命令本身也有很多的参数,
比如,App的IP地址,端口,主题,日志,自动重载脚本等等。
下面的命令可以查看run子命令的所有参数。
$ streamlit run --help
此外,config子命令可以快速查看当前对Streamlit的所有配置。
$ streamlit config show
cache子命令可以用来快速清理缓存。
$ streamlit cache clear
开发过程中,用的较多的就是上面三个子命令。
3. 第一个App
最后,我们用Streamlit来做一个简单的数据分析的应用,以此体会下它其强大之处。
3.1. 创建测试数据
首先创建一些测试数据,通过pandas和numpy创建20条时间序列数据。
# 创建时间序列测试数据
A = np.random.randint(1, 80, size=(20, 1))
B = np.random.randint(20, 100, size=(20, 1))
df = pd.DataFrame()
df.index = pd.date_range("2024/10/01", periods=20)
df["A"] = A
df["B"] = B

A列和B列是随机生成的数据,每次运行都会改变。
3.2. 用表格数据
接下来就是Streamlit登场的时候了,页面上显示pandas的DataFrame数据很简单,就一行代码。
# 显示数据
st.table(df)
浏览器访问:http://localhost:8501/

可以加个标题,稍微美化一下。
st.header("第一个APP")
st.divider() # 一条分割线

3.3. 用折线图显示数据
Streamlit用表格显示数据只要一行代码,同样,用折线图显示数据也只要一行代码。
# 显示折线图
st.line_chart(df)

3.4. 动态改变数据范围
接下来,添加Streamlit的控件,让我们可以动态的改变表格和折线图中的数据范围。
date_range = st.slider(
"日期范围",
min_value=datetime(2024, 10, 1),
max_value=datetime(2024, 10, 20),
value=(datetime(2024, 10, 1), datetime(2024, 10, 20)),
)
st.write(date_range)
添加一个数据范围的控件,范围改变时,用date_range的实际值去更新页面要显示的数据。
# graph_data是按日期过滤后的数据
graph_data = df.copy()
graph_data = graph_data[graph_data.index >= date_range[0]]
graph_data = graph_data[graph_data.index <= date_range[1]]
表格和折线图中的数据改成上面的graph_data。
# 显示折线图
st.line_chart(graph_data)
# 显示数据
st.table(graph_data)
这样,我们就可以在页面上动态改变数据范围,同时更新数据表格和折线图。

4. 总结
短短几行代码,就生成了一个展示DataFrame数据的Web应用。
与传统的Web开发方式相比,不需要任何前端的知识(HTML,CSS和javascript等),
而且,通过使用封装好的控件(table,line_chart等),开发效率极高。
与Jupyter Notebook相比,为用户提供了一个友好的操作界面,简单直观。
不需要用户通过修改代码来尝试不同的图表。
示例最终的完整代码如下:
import streamlit as st
import pandas as pd
import numpy as np
from datetime import datetime
# 创建时间序列测试数据
A = np.random.randint(1, 80, size=(20, 1))
B = np.random.randint(20, 100, size=(20, 1))
df = pd.DataFrame()
df.index = pd.date_range("2024/10/01", periods=20)
df["A"] = A
df["B"] = B
st.header("第一个APP")
st.divider()
# 增加日期范围动态调整
date_range = st.slider(
"日期范围",
min_value=datetime(2024, 10, 1),
max_value=datetime(2024, 10, 20),
value=(datetime(2024, 10, 1), datetime(2024, 10, 20)),
)
st.write(date_range)
graph_data = df.copy()
graph_data = graph_data[graph_data.index >= date_range[0]]
graph_data = graph_data[graph_data.index <= date_range[1]]
# 显示折线图
st.line_chart(graph_data)
# 显示数据
st.table(graph_data)
用run子命令来运行这个脚本即可。
streamlit run main.py
『玩转Streamlit』--环境配置的更多相关文章
- Github 恶搞教程(一起『玩坏』自己的 Github 吧)
最近在伯乐在线读到一篇趣文,<如何在 Github『正确』做贡献>,里面各种能人恶搞 Github 的『Public contributions』,下面截取几个小伙伴的战绩: 顺藤摸瓜,发 ...
- 史上最全Windows版本搭建安装React Native环境配置
史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有很多坑要跳,为了帮助新手快速无误的 ...
- Appium环境配置
一.JDK下载.安装及其环境配置 1.下载.安装略过…… 2.环境配置,以jdk-8u45为例,默认安装在 C:\Program Files\Java\jdk1.8.0_45\路径下. 下面设置环境变 ...
- phonegap环境配置与基本操作
一.开发环境配置: 1.工具环境安装: 安装java sdk 1.6以上版本号,Android Development Tools.ant,系统变量 Path后面加入 新增名稱 JAVA_HOME 值 ...
- React Native环境配置
React Native环境配置 史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有 ...
- ios开发环境配置及cordova安装与常用命令
一.ios开发环境配置 1.首先要有台Mac Book,如果有Mac Book,跳过步骤2.3.4,如果没有,执行步骤2.3.4: 2.下载并安装VMware Workstation,最好是下最新版本 ...
- 2018-2019-2 20165316 『网络对抗技术』Exp3:免杀原理与实践
2018-2019-2 20165316 『网络对抗技术』Exp3:免杀原理与实践 一 免杀原理与实践说明 (一).实验说明 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件, ...
- 2017-2018-2 20155303『网络对抗技术』Final:Web渗透获取WebShell权限
2017-2018-2 『网络对抗技术』Final:Web渗透获取WebShell权限 --------CONTENTS-------- 一.Webshell原理 1.什么是WebShell 2.We ...
- 2017-2018-2 20155303『网络对抗技术』Exp9:Web安全基础
2017-2018-2 『网络对抗技术』Exp9:Web安全基础 --------CONTENTS-------- 一.基础问题回答 1.SQL注入攻击原理,如何防御? 2.XSS攻击的原理,如何防御 ...
- 2017-2018-2 20155303『网络对抗技术』Exp8:Web基础
2017-2018-2 『网络对抗技术』Exp8:Web基础 --------CONTENTS-------- 一.原理与实践说明 1.实践具体要求 2.基础问题回答 二.实践过程记录 1.Web前端 ...
随机推荐
- 【FastDFS】环境搭建 03 FastDFS & Nginx整合
FastDFS & Nginx整合: 跟踪器结合Nginx,目的是为了负载均衡和高可用,只有一台Track可以不配置Nginx 安装FastDFS-Nginx-Module到服务器上面: ta ...
- 【Redis】05 持久化
持久化概述 Redis提供了不同的持久性选项: 1.RDB持久性按指定的时间间隔执行数据集的时间点快照. 2.AOF持久性会记录服务器接收的每个写入操作,这些操作将在服务器启动时再次播放,以重建原始数 ...
- dsu on tree 模板
dsu on tree模板运用 例题以及代码: U41492 树上数颜色 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 记录详情 - 洛谷 | 计算机科学教育新生态 (luogu. ...
- STM32F3, STM32F4编程手册
1. Cortex-M4的内核设备 NVIC, Nested vectored interrupt controller SCB, System control block SysTick, The ...
- WPF自定义控件之ItemsControl鱼眼效果
原理 先获取鼠标在控件中的坐标,在获取其每一项相对于ItemsControl的坐标,然后计算每一项离当前鼠标的距离,在根据这个距离,对其每一项进行适当的缩放 实现 创建一个类,命名为FishEyeIt ...
- JavaScript设计模式样例七 —— 原型模式
原型模式(Prototype Pattern) 定义:用于创建重复的对象,同时又能保证性能.目的:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.场景:在运行期建立和删除原型. let ...
- cnetos7.3离线安装vscode
1.从官网下载压缩包(话说下载下来解压就直接可以运行了咧,都不需要make) #下载vscode包 访问Visual Studio Code官网 https://code.visualstudio.c ...
- 如何选择 Linux 发行版
简介 要建立云服务器,首先需要安装操作系统.在现代环境中,几乎所有情况下都是指 Linux 操作系统.从历史上看,Windows 服务器和其他类型的 Unix 在特定的商业环境中都很流行,但现在几乎每 ...
- Android Adapter分页显示异常: 首页数据在屏幕内全显示,无法上滑分页
前情提要: Android 端Adapter分页,下拉刷新,上滑分页, 原有流程:上滑时,滑动触及底部,触发Adapter的onScrolled的方法 异常情况:第一页数据完全显示,导致上滑时,未触及 ...
- 支付宝小程序swiper video的坑
在使用uniapp 开发多端应用的时候,踩了一个坑,有一个页面,是使用swiper作为滑动容器,然后每个swiper-item 嵌套不同的内容, 代码示意: <template> < ...