但對于 streamlit 來說,請你相信我,這是一個你可以無腦去學習的框架,我之所以這么說,是因為" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > 一個傻瓜式構建可視化 web的 Python 神器 -- streamlit

一個傻瓜式構建可視化 web的 Python 神器 -- streamlit

時間:2023-07-06 06:12:02 | 來源:網(wǎng)站運營

時間:2023-07-06 06:12:02 來源:網(wǎng)站運營

一個傻瓜式構建可視化 web的 Python 神器 -- streamlit:正常在學習一個新框架之前, 肯定要先調研下這個框架究竟能做些什么事吧?

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

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

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

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

# 1. 如何安裝?

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

? pip install streamlit 考慮到 streamlit 會附帶安裝比較多的工具依賴包,為了不污染當前的主要環(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 還有對應的配套代碼

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

? streamlit run st-demo.py

# 2. Markdown 文本

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

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

import streamlit as st# markdownst.markdown('Streamlit Demo')# 設置網(wǎng)頁標題st.title('一個傻瓜式構建可視化 web的 Python 神器 -- streamlit')# 展示一級標題st.header('1. 安裝')st.text('和安裝其他包一樣,安裝 streamlit 非常簡單,一條命令即可')code1 = '''pip3 install streamlit'''st.code(code1, language='bash')# 展示一級標題st.header('2. 使用')# 展示二級標題st.subheader('2.1 生成 Markdown 文檔')# 純文本st.text('導入 streamlit 后,就可以直接使用 st.markdown() 初始化')# 展示代碼,有高亮效果code2 = '''import streamlit as stst.markdown('Streamlit Demo')'''st.code(code2, language='python')Streamlit 運行的方式 與普通的腳本 有所不同,應該使用 streamlit run st-demo.py

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

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

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

3.1 圖表組件

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

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 多種樣式,比如:

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

3.2 監(jiān)控組件

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

如下代碼創(chuà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 原生支持多種圖表:

下面一一展示

折線圖

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 也提供了支持:

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

# 4. 用戶操作支持

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

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

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

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

# 5. 多媒體組件

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

# 6. 狀態(tài)組件

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

效果如下:

# 7. 頁面布局

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

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

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

st.sidebar:側邊欄

側邊欄可以做一些用戶操作控件

st.columns:列容器,處在同一個 columns 內組件,按照從左至右順序展示

st.expander:隱藏信息,點擊后可展開展示詳細內容,如:展示更多

st.container:包含多組件的容器

st.empty:包含單組件的容器

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

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

# 9. 緩存特性提升速度

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

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

使用方法也簡單,在需要緩存的函數(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.cachedef 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 應用,運行起來后只能在本地訪問。

如果需要讓別人也能訪問這個應用,那你需要有一臺服務器,這樣才能通過公網(wǎng)ip進行訪問

如果你需要服務器,可以點 這個鏈接 領個卷有優(yōu)惠。

另外,還有一個選擇,就是使用 Heroku (https://heroku.com)部署你的應用。

Heroku是一個支持多種編程語言的云平臺即服務,你只要注冊一個帳號(聽說網(wǎng)易和 QQ 郵箱不行,我使用的 Gmail 注冊的)

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

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

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

這些文件的編碼有固定的格式,我這邊編寫好了一份模板下載地址 https://www.lanzout.com/ikMWkxqktgj

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

git initgit add --allgit commit -m "init"然后部署到 Heroku

heroku loginheroku creategit push heroku masterheroku ps:scale web=1按照命令行輸出的URL就可以訪問你的應用了。

查看Heroku日志:

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

heroku domains:add hivecnstats.iswbm.com使用 Heroku 唯一的缺點就是 Heroku 是需要梯子的,一般人訪問不了,沒條件的還是乖乖的備臺服務器吧。

# 12. 總結一下

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

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

關鍵詞:傻瓜

74
73
25
news

版權所有? 億企邦 1997-2025 保留一切法律許可權利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關閉