【Web快速开发】Streamlit

Installation - Streamlit Docshttps://docs.streamlit.io/library/get-started/installation

Streamlit 的特色:

  1. API简单明了,易上手
  2. 无须学习前端知识(html、css、javascript)
  3. 支持markdown和html文本的渲染

一、快速了解Streamlit

  • 对于用户的每一次交互,整个脚本从头到尾执行一遍
  • Streamlit基于UI组件的状态给变量赋值
  • 缓存让Streamlit可以避免重复请求数据或重复计算

1. 效果展示

2. 样例代码

import streamlit as st
import pandas as pd
import numpy as np
 
DATE_COLUMN = 'date/time'
DATA_URL = ('https://s3-us-west-2.amazonaws.com/streamlit-demo-data/uber-raw-data-sep14.csv.gz')
 
#缓存机制,再一个函数前使用@st.cache,用户在第二次使用时,可以直接读取。当然,前提是传进去的参数要是一样的。
@st.cache
def load_data(nrows):
    data = pd.read_csv(DATA_URL, nrows=nrows)
    lowercase = lambda x: str(x).lower()
    data.rename(lowercase, axis='columns', inplace=True)
    data[DATE_COLUMN] = pd.to_datetime(data[DATE_COLUMN])
    return data
 
# 创建一个文本框,让用户知道数据正在加载
data_load_state = st.text('Loading data...')
# 展示数据的前1000行
data = load_data(1000)
# 告诉用户数据已经加载成功
data_load_state.text('Done! (using st.cache)')
 
#添加一个单选框,是否要显示表格里面的内容
if st.checkbox('Show raw data'):
    st.subheader('Raw data')
    st.write(data)
 
st.subheader('Number of pickups by hour')
hist_values = np.histogram(data[DATE_COLUMN].dt.hour, bins=24, range=(0,24))[0]
#绘制柱状图
st.bar_chart(hist_values)
 
# Some number in the range 0-23
hour_to_filter = st.slider('hour', 0, 23, 17)
filtered_data = data[data[DATE_COLUMN].dt.hour == hour_to_filter]
 
st.subheader('Map of all pickups at %s:00' % hour_to_filter)
st.map(filtered_data)

 

二、Streamlit功能介绍

  • 渲染图表
  • 页面布局
  • 输入交互

1. 渲染图表

2. 页面布局

2.1 整体页面配置

st.set_page_config(
     page_title="Ex-stream-ly Cool App",
     page_icon="🧊",
     layout="wide",    # 'wide' or 'centered'
     initial_sidebar_state="expanded",
     menu_items={
         'Get Help': 'https://www.extremelycoolapp.com/help',
         'Report a bug': "https://www.extremelycoolapp.com/bug",
         'About': "# This is a header. This is an *extremely* cool app!"
     }
 )

2.2 页面元素布局

3. 输入交互

3.1 输入微件

3.2 控制流

3.2.1 st.form

form表单进行批量输入。form_submit_button是必要的,且st.button是禁止的

with st.form("my_form"):
    st.write("Inside the form")
    slider_val = st.slider("Form slider")
    checkbox_val = st.checkbox("Form checkbox")

    # Every form must have a submit button.
    submitted = st.form_submit_button("Submit")
    if submitted:
        st.write("slider", slider_val, "checkbox", checkbox_val)

st.write("Outside the form")

3.2.2 st.stop

name = st.text_input('Name')
if not name:
  st.warning('Please input a name.')
  st.stop()
st.success('Thank you for inputting a name.')

 三、更多的模板APP

官网查看 Streamlit • The fastest way to build and share data apps

四、多页面APP

https://www.jianshu.com/p/4af6dba83156

Create a multipage app - Streamlit Docs

  • 5
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值