亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

構(gòu)建可視化?web的?Python?神器streamlit

 更新時間:2022年06月10日 14:09:02   作者:??MedusaSorcerer????  
這篇文章主要介紹了構(gòu)建可視化web的Python神器streamlit,Streamlit是一個用于機器學(xué)習(xí)、數(shù)據(jù)可視化的Python框架,它能幾行代碼就構(gòu)建出一個精美的在線app應(yīng)用

前言:

今天要介紹這個神器,可以說是  pywebio  的 Plus  + Pro  + Max  版,原諒我的詞窮,但它真的非常的強~ 
正常在學(xué)習(xí)一個新框架之前, 肯定要先調(diào)研下這個框架究竟能做些什么事吧?

但對于 streamlit 來說,請你相信我,這是一個你可以無腦去學(xué)習(xí)的框架,我之所以這么說,是因為我相信終有一天,你一定能用得上它。

Streamlit 是一個用于機器學(xué)習(xí)、數(shù)據(jù)可視化的 Python 框架,它能幾行代碼就構(gòu)建出一個精美的在線 app 應(yīng)用。

它能做什么,取決于你想干什么?

streamlit 的功能強大,要學(xué)習(xí)的函數(shù)雖然多,但非常容易上手,學(xué)習(xí)成本卻遠(yuǎn)比 前端+Flask 來得低得低。接下來,我會一一介紹。

1. 如何安裝?

和安裝其他包一樣,安裝 streamlit 非常簡單,一條命令即可

??pip?install?streamlit?

考慮到 streamlit 會附帶安裝比較多的工具依賴包,為了不污染當(dāng)前的主要環(huán)境,我使用 venv 新建一個虛擬環(huán)境。

??python3?-m?venv?.

然后使用如下命令進入該虛擬環(huán)境

??source?./venv/bin/activate

接下來,再安裝 streamlit ,命令在上邊。

安裝的包比較多(數(shù)了下竟然接近 92 個?),過程也會很久,需要點耐心

??pip?list?|?wc?-l
??????92

在安裝過程中,可能會遇到一些問題,但也不一定,這取決于你的機器,如遇到問題請自行借助搜索引擎解決。

2. 入門示例

Streamlit 提供了一些入門示例,執(zhí)行如下命令即可

??streamlit?hello

執(zhí)行后 streamlit 會自動打開瀏覽器加載一個本地頁面 http://localhost:8501/

這里面有很多的 demo,你可以看一下,這些 Demo 還有對應(yīng)的配套代碼

這些代碼直接拷貝保存,就可以在本地直接通過如下命令直接運行

??streamlit?run?st-demo.py

2. Markdown 文本

導(dǎo)入 streamlit 后,就可以直接使用 st.markdown() 初始化,調(diào)用不同的方法,就可以往文檔對象中填入內(nèi)容

  • st.title():文章大標(biāo)題
  • st.header():一級標(biāo)題
  • st.subheader():二級標(biāo)題
  • st.text():文本
  • st.code():代碼,同時可設(shè)置代碼的語言,顯示的時候會高亮
  • st.latex():latex 公式
  • st.caption():小字體文本

如下我自己寫的一個小 Demo,供參考

import?streamlit?as?st

#?markdown
st.markdown('Streamlit?Demo')

#?設(shè)置網(wǎng)頁標(biāo)題
st.title('一個傻瓜式構(gòu)建可視化?web的?Python?神器?--?streamlit')

#?展示一級標(biāo)題
st.header('1.?安裝')

st.text('和安裝其他包一樣,安裝?streamlit?非常簡單,一條命令即可')
code1?=?'''pip3?install?streamlit'''
st.code(code1,?language='bash')


#?展示一級標(biāo)題
st.header('2.?使用')

#?展示二級標(biāo)題
st.subheader('2.1?生成?Markdown?文檔')

#?純文本
st.text('導(dǎo)入?streamlit?后,就可以直接使用?st.markdown()?初始化')

#?展示代碼,有高亮效果
code2?=?'''import?streamlit?as?st
st.markdown('Streamlit?Demo')'''
st.code(code2,?language='python')

Streamlit 運行的方式 與普通的腳本 有所不同,應(yīng)該使用 streamlit run st-demo.py

image.png

運行后就會自動打開瀏覽器加載這個頁面,如果沒有自動打開,也可以手動拷貝上圖中的鏈接打開訪問。

是不是有點那個味了?就這,還只是開胃菜~

3. 數(shù)據(jù)圖表支持

3.1 圖表組件

關(guān)于數(shù)據(jù)的展示,streamlit 由兩個組件進行支持

  • table:普通的表格,用于靜態(tài)數(shù)據(jù)的展示
  • dataframe:高級的表格,可以進行數(shù)據(jù)的操作,比如排序

Table 的示例:

df?=?pd.DataFrame(
????np.random.randn(10,?5),
????columns=('第%d列'?%?(i+1)?for?i?in?range(5))
)

st.table(df)

效果如下:

Datafram 的示例:

df?=?pd.DataFrame(
????np.random.randn(10,?5),
????columns=('第%d列'?%?(i+1)?for?i?in?range(5))
)

st.dataframe(df.style.highlight_max(axis=0))

效果如下,可以看到在圖示外,有個向下的小箭頭,你點一下,就會進行排序,除此之外,你還能看到我對最大值進行了高亮顯示,原因是我傳入的參數(shù)是 df.style.highlight_max(axis=0)

其實還有 n 多種樣式,比如:

  • highlight_null:空值高亮
  • highlight_min:最小值高亮
  • highlight_max:最大值高亮
  • highlight_between:某區(qū)間內(nèi)的值高亮
  • highlight_quantile:暫沒用過

這些你都可以在源代碼中找到示例

3.2 監(jiān)控組件

在采集到一些監(jiān)控數(shù)據(jù)后,若你需要做一個監(jiān)控面板, streamlit 也為你提供的 metric 組件

如下代碼創(chuàng)建 三個指標(biāo),并且填入對應(yīng)的數(shù)據(jù)

col1,?col2,?col3?=?st.columns(3)
col1.metric("Temperature",?"70?°F",?"1.2?°F")
col2.metric("Wind",?"9?mph",?"-8%")
col3.metric("Humidity",?"86%",?"4%")

刷新頁面,就能看到下面的效果:

3.3 原生圖表組件

Streamlit 原生支持多種圖表:

  • st.line_chart:折線圖
  • st.area_chart:面積圖
  • st.bar_chart:柱狀圖
  • st.map:地圖

下面一一展示

折線圖

chart_data?=?pd.DataFrame(
????np.random.randn(20,?3),
????columns=['a',?'b',?'c'])
st.line_chart(chart_data)

面積圖

chart_data?=?pd.DataFrame(
????np.random.randn(20,?3),
????columns?=?['a',?'b',?'c'])
st.area_chart(chart_data)

柱狀圖

chart_data?=?pd.DataFrame(
????np.random.randn(50,?3),
????columns?=?["a",?"b",?"c"])
st.bar_chart(chart_data)

地圖

df?=?pd.DataFrame(
????np.random.randn(1000,?2)?/?[50,?50]?+?[37.76,?-122.4],
????columns=['lat',?'lon']
)
st.map(df)

3.4 外部圖表組件

Streamlit 的一些原生圖表組件,雖然做到了傻瓜式,但僅能輸入數(shù)據(jù)、高度和寬度,如果你想更漂亮的圖表,就像 matplotlib.pyplot、Altair、vega-lite、Plotly、Bokeh、PyDeck、Graphviz 那樣,streamlit 也提供了支持:

  • st.pyplot
  • st.bokeh_chart
  • st.altair_chart
  • st.altair_chart
  • st.vega_lite_chart
  • st.plotly_chart
  • st.pydeck_chart
  • st.graphviz_chart

對于這部分,熟悉的同學(xué)自行嘗試了,這里不再演示。

4. 用戶操作支持

前面 streamlit 都只是展示文本和數(shù)據(jù),如果僅是如此,那 streamlit 也就 just so so

對于那些不會前端,并且平時有需要寫一些簡單的頁面的人說,能寫一些交互界面才是硬需求。

慶幸的是,你平時在網(wǎng)頁上、app 上能看到的交互組件,Streamlit 幾乎都能支持。。

  • button:按鈕
  • download_button:文件下載
  • file_uploader:文件上傳
  • checkbox:復(fù)選框
  • radio:單選框
  • selectbox:下拉單選框
  • multiselect:下拉多選框
  • slider:滑動條
  • select_slider:選擇條
  • text_input:文本輸入框
  • text_area:文本展示框
  • number_input:數(shù)字輸入框,支持加減按鈕
  • date_input:日期選擇框
  • time_input:時間選擇框
  • color_picker:顏色選擇器

這些內(nèi)容非常多,也比較簡單,一個一個舉例也沒必要,大家直接去看 streamlit 源碼里的注釋即可。

5. 多媒體組件

想要在頁面上播放圖片、音頻和視頻,可以使用 streamlit 的這三個組件:

  • st.image
  • st.audio
  • st.video

6. 狀態(tài)組件

狀態(tài)組件用來向用戶展示當(dāng)前程序的運行狀態(tài),包括:

  • progress:進度條,如游戲加載進度
  • spinner:等待提示
  • balloons:頁面底部飄氣球,表示祝賀
  • error:顯示錯誤信息
  • warning:顯示報警信息
  • info:顯示常規(guī)信息
  • success:顯示成功信息
  • exception:顯示異常信息(代碼錯誤棧)

效果如下:

7. 頁面布局

Streamlit 是自上而下渲染的,組件在頁面上的排列順序與代碼的執(zhí)行順序一致。

一個精美的 web app ,只有上下單欄式的布局肯定是不夠的。

實際上 streamlit 還提供了多種多樣的布局:

st.sidebar:側(cè)邊欄

側(cè)邊欄可以做一些用戶操作控件

  • st.columns:列容器,處在同一個 columns 內(nèi)組件,按照從左至右順序展示
  • st.expander:隱藏信息,點擊后可展開展示詳細(xì)內(nèi)容,如:展示更多
  • st.container:包含多組件的容器
  • st.empty:包含單組件的容器

8. 流程控制系統(tǒng)

Streamlit 是自上而下逐步渲染出來的,若你的應(yīng)用場景需要對渲染做一些控制,streamlit 也有提供對應(yīng)的方法

  • st.stop:可以讓 Streamlit 應(yīng)用停止而不向下執(zhí)行,如:驗證碼通過后,再向下運行展示后續(xù)內(nèi)容。
  • st.form:表單,Streamlit 在某個組件有交互后就會重新執(zhí)行頁面程序,而有時候需要等一組組件都完成交互后再刷新(如:登錄填用戶名和密碼),這時候就需要將這些組件添加到 form 中
  • st.form_submit_button:在 form 中使用,提交表單。

9. 緩存特性提升速度

當(dāng)用戶在頁面上做一些操作的時候,比如輸入數(shù)據(jù),都會觸發(fā)整個 streamlit 應(yīng)用代碼的重新執(zhí)行,如果其中有讀取外部數(shù)據(jù)的步驟(數(shù) GB 的數(shù)據(jù)),那這種性能損耗是非??膳碌?。

但 streamlit 提供了一個緩存裝飾器,當(dāng)要重新執(zhí)行代碼渲染頁面的時候,就會先去緩存里查一下,如果代碼或者數(shù)據(jù)沒有發(fā)生變化,就直接調(diào)用緩存的結(jié)果即可。

使用方法也簡單,在需要緩存的函數(shù)加上 @st.cache 裝飾器即可。

DATE_COLUMN?=?'date/time'
DATA_URL?=?('https://s3-us-west-2.amazonaws.com/'
????????????'streamlit-demo-data/uber-raw-data-sep14.csv.gz')

@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

10. 部署上線

在本地編寫的 streamlit 應(yīng)用,運行起來后只能在本地訪問。如果需要讓別人也能訪問這個應(yīng)用,那你需要有一臺服務(wù)器,這樣才能通過公網(wǎng)ip進行訪問如果你需要服務(wù)器,可以點 這個鏈接 領(lǐng)個卷有優(yōu)惠。另外,還有一個選擇,就是使用 Heroku 部署你的應(yīng)用。Heroku是一個支持多種編程語言的云平臺即服務(wù),你只要注冊一個帳號(聽說網(wǎng)易和 QQ 郵箱不行,我使用的 Gmail 注冊的)

然后創(chuàng)建自己的 app

這個 App 名字好像是要全網(wǎng)唯一,本想取個 hello-streamlit 的,發(fā)現(xiàn)早有人取過了。

然后為你的應(yīng)用,創(chuàng)建幾個 Heroku 規(guī)定的文件:

  • requirements.txt:依賴包文件
  • setup.sh:安裝腳本,主要是創(chuàng)建文件夾,寫入配置文件
  • Procfile:啟動腳本,告訴 Heroku 如何安裝并啟動應(yīng)用

這些文件的編碼有固定的格式。

拿到了這份模板后,你就可以基于這份模板創(chuàng)建你的 git 倉庫

git?init
git?add?--all
git?commit?-m?"init"

然后部署到 Heroku

heroku?login
heroku?create
git?push?heroku?master
heroku?ps:scale?web=1

按照命令行輸出的URL就可以訪問你的應(yīng)用了。

查看Heroku日志:

heroku?logs?--tail

要想使用自己域名,需要先通過Heroku驗證。然后運行:

heroku?domains:add?hivecnstats.iswbm.com

使用 Heroku 唯一的缺點就是 Heroku 是需要梯子的,一般人訪問不了,沒條件的還是乖乖的備臺服務(wù)器吧。

12. 總結(jié)

Streamlit 一個開箱即用的工具集,它可以讓一個普通的個人開發(fā)者免于學(xué)習(xí)繁雜的前端知識,就可以輕松、快速的構(gòu)建一個簡潔、優(yōu)雅的 web app 應(yīng)用,這是 streamlit 最吸引人的地方。

對于從事數(shù)據(jù)分析,機器學(xué)習(xí)領(lǐng)域的人來說,它絕對是開發(fā)神器,但即使你不是這些領(lǐng)域的人,你肯定也會有搭建一個 web app 需求的時候,streamlit 正是你需要的。

到此這篇關(guān)于構(gòu)建可視化 web的 Python 神器streamlit的文章就介紹到這了,更多相關(guān)Python streamlit內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 簡明 Python 基礎(chǔ)學(xué)習(xí)教程

    簡明 Python 基礎(chǔ)學(xué)習(xí)教程

    無論您剛接觸電腦還是一個有經(jīng)驗的程序員,本書都將有助您學(xué)習(xí)使用Python語言
    2007-02-02
  • 排序算法之插入排序法解析

    排序算法之插入排序法解析

    這篇文章主要介紹了排序算法之插入排序法解析,插入排序法是一種簡單但有效的排序算法,其基本思想是將一個待排序的元素逐個插入到已經(jīng)排好序的元素序列中,直至所有元素都被插入完成,從而得到一個有序序列,需要的朋友可以參考下
    2023-07-07
  • Python中Celery異步任務(wù)隊列的具體使用

    Python中Celery異步任務(wù)隊列的具體使用

    Celery是一個用于處理分布式任務(wù)和作業(yè)隊列的異步任務(wù)隊列庫,本文主要介紹了Python中Celery異步任務(wù)隊列的具體使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • Python3學(xué)習(xí)筆記之列表方法示例詳解

    Python3學(xué)習(xí)筆記之列表方法示例詳解

    Python3 列表 序列是Python中最基本的數(shù)據(jù)結(jié)構(gòu),下面這篇文章主要給大家介紹了關(guān)于Python3學(xué)習(xí)筆記之列表方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下。
    2017-10-10
  • python制作微博圖片爬取工具

    python制作微博圖片爬取工具

    這篇文章主要介紹了python如何制作微博圖片爬取工具,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • python進行OpenCV實戰(zhàn)之畫圖(直線、矩形、圓形)

    python進行OpenCV實戰(zhàn)之畫圖(直線、矩形、圓形)

    這篇文章主要為大家詳細(xì)介紹了python進行OpenCV實戰(zhàn)之畫圖功能,畫出直線、矩形、圓形,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Python玩轉(zhuǎn)加密的技巧【推薦】

    Python玩轉(zhuǎn)加密的技巧【推薦】

    Python 中的一個有用的基本加密庫就叫做 cryptography 。這篇文章主要介紹了Python玩轉(zhuǎn)加密的技巧,需要的朋友可以參考下
    2019-05-05
  • 關(guān)于 Python json中l(wèi)oad和loads區(qū)別

    關(guān)于 Python json中l(wèi)oad和loads區(qū)別

    這篇文章主要介紹了關(guān)于 Python json中l(wèi)oad和loads區(qū)別,文章也有簡單的說明它們之間的相同點,然后詳細(xì)介紹不同點,需要的朋友可以參考一下文章的具體內(nèi)容
    2021-11-11
  • python軟件測試Jmeter性能測試JDBC Request(結(jié)合數(shù)據(jù)庫)的使用詳解

    python軟件測試Jmeter性能測試JDBC Request(結(jié)合數(shù)據(jù)庫)的使用詳解

    這篇文章主要介紹了python軟件測試Jmeter性能測試JDBC Request(結(jié)合數(shù)據(jù)庫)的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Pandas 合并多個Dataframe(merge,concat)的方法

    Pandas 合并多個Dataframe(merge,concat)的方法

    今天小編就為大家分享一篇Pandas 合并多個Dataframe(merge,concat)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評論