头图

本文旨在快速上手python的streamlit库,包括安装,输入数据,绘制图表,基础控件,进度条,免费部署。

Streamlit,更快地帮你建构和分享数据应用! streamlit官网如是说, 在数据处理,数据展示,机器学习原型,AI原型展示等方面十分契合。当然咱们用来做一些简单的web应用也是完全没问题的,上手难度低,部署简单,且官方平台提供了免费的可公网访问Streamlit Sharing托管.

快速介绍一些Streamlit的特点

  • 和数据科学工具有很高集成度. Matplotlib, Pandas, Ploty, Altair等库,都很好地在streamlit中做了适配, 可以在应用中直接展示这些库生成的图表和数据,在很多相关学术论文中都可以看见streamlit的影子。
  • 易于部署. 可以通过很简单的命令就完成应用的部署,在任何地方都可以运行,本地,云服务器,也可以直接托管在官方的Streamlit Sharing.
  • 实时更新. Streamlit应用会实时更新,每当数据变化,应用也会自动更新。

0x00 安装

  • 确认咱的python版本在3.8以上
  • 使用pip直接进行安装 pip install streamlit
    OK, 安装就完毕了。 可以使用命令 streamlit hello
    streamlit hello

嗖~ streamlit自带的HelloWorld Demo就弹出来了,可以扒拉一下左边的demo。

0x01 编码之前

  • 在开始敲代码之前, 先来讲一个比较重要的点 -> 如何启动streamlit app脚本

不同于一般的python脚本, 可以通过python xxx.py的方式运行,streamlit需要使用python -m streamlit run xxx.py来运行。(streamlit run之后跟的脚本,甚至可以是github仓库链接, 比如:streamlit run https://github.com/Algieba-dean/ZhuGeHorary/blob/master/ZhuGeHorary_APP.py)

  • Streamlit会实时监测修改, 代码的改动在保存时,会同步更新到部署的App上.

    0x02 显示数据

    st.write()

  • st.write(),如果不知道用什么,那就用它准没错. 即使有st.table(),st.dataframe()没有什么特别的需求

    import streamlit as st
    import pandas as pd
    st.write("显示表格:")
    st.write(pd.DataFrame({
      'A列': [1, 2, 3, 4],
      'B列': [101, 202, 303, 404]
    }))

    OK现在咱学会了最简单的数据展示

dataframe_show

0x03 输入控件

st.text_input

  • 最简单的输入控件, 可以输入文本

    text = st.text_input("输入一些文字吧")
    st.write(text)

text_input_example

OK,会这俩,就已经可以完成很大一部分任务了。

0x04 高级控件

  • st.number_input数字输入

    number = st.number_input("输入一个0-100间的数字", min_value=0, max_value=100, step=1)

number_input_example

  • st.slider滑动块

    slider_number = st.slider(f"试着一口气滑到数字{number}", min_value=0, max_value=10000, value=[0, 500])

    slider_example

  • st.file_uploader文件上传

    uploaded_file = st.file_uploader("上传一个数据文件", type=['csv', 'txt'])

    upload_file_example

0x05 进度条

  • st.progress 进度条

    import  time
    st.write("计算模拟中……")
    
    latest_iteration = st.empty()
    
    bar = st.progress(0)
    
    for i in range(100):
      latest_iteration.text(f"迭代到{i+1}")
      bar.progress(i + 1)
      time.sleep(0.1)
    
    st.write("模拟计算完毕!")

progress_bar_example

0x06 应用部署

  • 将代码上传到Github,并将其设为公共仓库
  • 用github账户登录streamlit share
  • 点击右上角的Create app
  • 点击Deploy a public app from GitHub中的Deploy now
  • 正确填入仓库信息, 脚本文件名, 自己配置一个可用的url
  • 点击Deploy
  • 然后经过等待,你的app就上线啦

deploy app

结束

欢迎在这里留下你的app链接


阿尔的代码屋
1 声望0 粉丝

Add bricks to the edifice of the world as you envision it.