尽管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. 创建测试数据

首先创建一些测试数据,通过pandasnumpy创建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登场的时候了,页面上显示pandasDataFrame数据很简单,就一行代码。

# 显示数据
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开发方式相比,不需要任何前端的知识(HTMLCSSjavascript等),

而且,通过使用封装好的控件(tableline_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』--环境配置的更多相关文章

  1. Github 恶搞教程(一起『玩坏』自己的 Github 吧)

    最近在伯乐在线读到一篇趣文,<如何在 Github『正确』做贡献>,里面各种能人恶搞 Github 的『Public contributions』,下面截取几个小伙伴的战绩: 顺藤摸瓜,发 ...

  2. 史上最全Windows版本搭建安装React Native环境配置

    史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有很多坑要跳,为了帮助新手快速无误的 ...

  3. Appium环境配置

    一.JDK下载.安装及其环境配置 1.下载.安装略过…… 2.环境配置,以jdk-8u45为例,默认安装在 C:\Program Files\Java\jdk1.8.0_45\路径下. 下面设置环境变 ...

  4. phonegap环境配置与基本操作

    一.开发环境配置: 1.工具环境安装: 安装java sdk 1.6以上版本号,Android Development Tools.ant,系统变量 Path后面加入 新增名稱 JAVA_HOME 值 ...

  5. React Native环境配置

    React Native环境配置 史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有 ...

  6. ios开发环境配置及cordova安装与常用命令

    一.ios开发环境配置 1.首先要有台Mac Book,如果有Mac Book,跳过步骤2.3.4,如果没有,执行步骤2.3.4: 2.下载并安装VMware Workstation,最好是下最新版本 ...

  7. 2018-2019-2 20165316 『网络对抗技术』Exp3:免杀原理与实践

    2018-2019-2 20165316 『网络对抗技术』Exp3:免杀原理与实践 一 免杀原理与实践说明 (一).实验说明 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件, ...

  8. 2017-2018-2 20155303『网络对抗技术』Final:Web渗透获取WebShell权限

    2017-2018-2 『网络对抗技术』Final:Web渗透获取WebShell权限 --------CONTENTS-------- 一.Webshell原理 1.什么是WebShell 2.We ...

  9. 2017-2018-2 20155303『网络对抗技术』Exp9:Web安全基础

    2017-2018-2 『网络对抗技术』Exp9:Web安全基础 --------CONTENTS-------- 一.基础问题回答 1.SQL注入攻击原理,如何防御? 2.XSS攻击的原理,如何防御 ...

  10. 2017-2018-2 20155303『网络对抗技术』Exp8:Web基础

    2017-2018-2 『网络对抗技术』Exp8:Web基础 --------CONTENTS-------- 一.原理与实践说明 1.实践具体要求 2.基础问题回答 二.实践过程记录 1.Web前端 ...

随机推荐

  1. Trump 黑马 or 搅局者? 讲座视频分享

    沈逸-特朗普能走多远   https://www.bilibili.com/video/BV1r7411t7VS/?spm_id_from=333.788.videocard.2     国际关系 对 ...

  2. 支持NVIDIA GPU —— 如何运行docker环境下的Jax环境

    项目地址: https://github.com/NVIDIA/JAX-Toolbox 具体的安装命令: 地址: https://github.com/NVIDIA/JAX-Toolbox/pkgs/ ...

  3. 【转载】 机器学习的高维数据可视化技术(t-SNE 介绍) 外文博客原文:How t-SNE works and Dimensionality Reduction

    原文地址: https://www.displayr.com/using-t-sne-to-visualize-data-before-prediction/ 该文是网上传的比较多的一个 t-SNE ...

  4. mongo变更流使用及windows下副本集五分钟搭建

    mongodb的变更流解释: 变更流(Change Streams)允许应用程序访问实时数据变更,从而避免事先手动追踪  oplog 的复杂性和风险.应用程序可使用变更流来订阅针对单个集合.数据库或整 ...

  5. 【1】Kaggle赛题解读:RSNA 2024 Lumbar Spine Degenerative Classification

    赛题名称:RSNA 2024 Lumbar Spine Degenerative Classification 中文:腰椎退行性病变分类 kaggle官网赛题链接:https://www.kaggle ...

  6. docker安装cdh6.3.2集群(联网版)

    一.前言 本次采用的在线安装方式,cdh为6.3.2版本,系统为centos7.4, docker节点可以为任意多个,下文将以3个docker容器为示例进行展示.此方法也可用在docker swarm ...

  7. C# 使用HtmlAgilityPack 抓取 网站链接

    今天在找电视剧下载链接的时候,找了一个整部剧的下载地址,但是有40多集,链接地址较长且不好复制,于是就想到了HtmlAgilityPack抓取的方式. 先看实现效果: 使用到的NUGET包: Html ...

  8. win11(含win10)自带的一键镜像备份与还原方法

    winxp和win7时代小伙伴们备份或恢复系统时大都采用类似一键ghost类的软件制作系统盘的映像,当遇到故障时再恢复,但win10和win11其实自带有这种映像制作和还原功能,我们就再也不需要额外安 ...

  9. 浅谈下javascript的proxy和reflect

    近日喜欢上了uniapp和vue,但看到相关程序代码中频繁出现了proxy和reflect的使用,于是进行了一番学习,现总结如下. Proxy和Reflect是ES6(ECMAScript 2015) ...

  10. 啥是Session?

    什么是 Session 会话? 1.Session 就一个接口(HttpSession). 2.Session 就是会话.它是用来维护一个客户端和服务器之间关联的一种技术. 3.每个客户端都有自己的一 ...