尽管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. 【Eclipse】入门使用

    Eclipse界面简单概述 第一次启动时,工作空间的选择 工作界面的介绍: 选项条 工具栏 工程浏览窗口 工程大纲窗口 控制台输出窗口 在窗口选项中悬浮放在Show View选项中可以查看所有的窗口 ...

  2. vue 识别\n \t 等字符(转载)

    使用.text(str)时,str中有"\n",但是页面显示却没有换行,需要在所在的 div添加属性 style="white-space: pre-line" ...

  3. Java中0.2减0.1 结果为什么不是0.1?

    double 表示这种类型的数值精度是 float 类型的两倍(有人称之为双精度数值).绝大部 分应用程序都采用double 类型.在很多情况下,float 类型的精度很难满足需求.实际上,只 有很少 ...

  4. GAN总结

    GAN总结 本篇文章主要是根据GitHub上的GAN代码库[PyTorch-GAN]进行GAN的复习和回顾,对于之前GAN的各种结构的一种简要的概括. Code 关于评价GAN模型的标准 Incept ...

  5. SMU Spring 2023 Trial Contest Round 9

    A. Wrong Subtraction  在k次操作里, 将n的最后一位数减1,如果是0就去掉,模拟一下就好了. #include <bits/stdc++.h> //#define i ...

  6. Camera | 1.Camera基础知识

    一口君最近在玩瑞芯微的板子,之前写了几篇基于瑞芯微的文章,大家可以学习一下. <瑞芯微rk356x板子快速上手> <Linux驱动|rtc-hym8563移植笔记> <L ...

  7. .netcore生命周期、消息管道

    .NET Core 的初始化过程涉及多个步骤,这些步骤从应用程序的启动开始,一直到应用程序准备好处理请求.下面是一个简化的概述,描述了 .NET Core 应用程序(特别是 ASP.NET Core ...

  8. TwinCAT3 - 实现自己的Tc2_SerialCom

    目录 1,前言 2,原生Tc2_SerialCom简单使用 3,实现自己的Tc2_SerialCom 3.1,EL6inData22B,EL6outData22B 3.2,ComBuffer 3.3, ...

  9. 记一次list集合优化

    已知某个列表List1有2000条数据,但是因为这个列表的某个字段要从另一个表查询,所以根据一个关联的查询条件查出来的另一个List2有将近75000条数据,然后需要先循环第一个List1,然后循环里 ...

  10. 在 Docker 中启动 Jupyter

    参考:Jupyter Docker Stacks documentation 容器地址在 quay.io/jupyter/scipy-notebook 如果你直接运行命令: docker run -p ...