动态

详情 返回 返回

[python 技巧] 快速掌握Streamlit: python快速原型開發工具 - 动态 详情

本文旨在快速上手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鏈接

Add a new 评论

Some HTML is okay.