使用Streamlit快速搭建和共享交互式應(yīng)用
介紹:
在數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)領(lǐng)域,向他人展示見(jiàn)解和分享結(jié)果與分析本身同樣重要。然而,創(chuàng)建交互式和用戶友好型的應(yīng)用程序通常需要復(fù)雜的框架和耗時(shí)的開(kāi)發(fā)過(guò)程。Streamlit是一個(gè)Python庫(kù),它簡(jiǎn)化了以數(shù)據(jù)為重點(diǎn)的網(wǎng)絡(luò)應(yīng)用程序的創(chuàng)建過(guò)程,使開(kāi)發(fā)人員和數(shù)據(jù)科學(xué)家能夠快速將他們的想法轉(zhuǎn)化為交互式儀表盤(pán)和原型。
在本文中,我們將探討Streamlit庫(kù)及其主要功能,重點(diǎn)介紹它成為在Python中搭建交互式應(yīng)用程序熱門(mén)選擇的原因。
什么是Streamlit?
Streamlit是一個(gè)開(kāi)源的Python庫(kù),旨在為數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)輕松搭建精美的交互式應(yīng)用程序。有了Streamlit,你就可以創(chuàng)建和部署網(wǎng)絡(luò)應(yīng)用程序,而無(wú)需處理復(fù)雜的網(wǎng)絡(luò)開(kāi)發(fā)問(wèn)題。它提供了一個(gè)簡(jiǎn)單直觀的API,讓你可以專(zhuān)注于編寫(xiě)代碼和可視化數(shù)據(jù),而不必?fù)?dān)心HTML、CSS或JavaScript。
Streamlit的主要特點(diǎn):
- 易于使用的API:Streamlit的API設(shè)計(jì)簡(jiǎn)單明了,開(kāi)發(fā)人員只需幾行代碼就能創(chuàng)建功能強(qiáng)大的應(yīng)用程序。可以輕松添加滑塊、復(fù)選框和下拉菜單等交互式小工具,以控制應(yīng)用程序的行為并實(shí)時(shí)更新可視化效果。
- 快速迭代:Streamlit 的開(kāi)發(fā)工作流程鼓勵(lì)快速迭代。當(dāng)你編寫(xiě)代碼時(shí),Streamlit的自動(dòng)重新運(yùn)行功能會(huì)即時(shí)反映應(yīng)用程序中的變化,無(wú)需手動(dòng)重新加載。這一功能可讓你獲得流暢的開(kāi)發(fā)體驗(yàn),使你能夠快速進(jìn)行實(shí)驗(yàn)和迭代。
- 廣泛的可視化選項(xiàng):Streamlit提供多種內(nèi)置可視化元素,包括圖表、地圖、表格和自定義組件。你可以使用Matplotlib、Plotly或Altair等流行庫(kù)創(chuàng)建交互式圖表,并輕松顯示它們。Streamlit還支持渲染圖片、視頻和交互式 HTML組件等豐富的媒體。
- 共享和部署:使用Streamlit,可以輕松地與他人共享應(yīng)用程序。無(wú)論是想將應(yīng)用程序部署到云服務(wù)器上,還是將其作為獨(dú)立的可執(zhí)行文件進(jìn)行共享,Streamlit都能提供無(wú)縫的選擇。可以在Heroku、AWS等平臺(tái)上部署 Streamlit應(yīng)用程序,甚至可以將其作為Docker容器部署。
Streamlit示例:
本文將通過(guò)探索如下示例來(lái)展示Streamlit的功能:
a. 數(shù)據(jù)探索儀表板:
#pip install streamlit
import streamlit as st
import pandas as pd
# 加載數(shù)據(jù)集
data = pd.read_csv("data.csv")
# 添加用于篩選的部件
selected_columns = st.multiselect("Select columns", data.columns)
# 過(guò)濾并顯示數(shù)據(jù)
filtered_data = data[selected_columns]
st.dataframe(filtered_data)
b. 機(jī)器學(xué)習(xí)原型:
import streamlit as st
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
# 加載數(shù)據(jù)集
data = pd.read_csv("data.csv")
# 創(chuàng)建輸入部件
feature1 = st.slider("Feature 1", 0, 100)
feature2 = st.slider("Feature 2", 0, 100)
# 訓(xùn)練模型
model = RandomForestClassifier()
model.fit(data[["Feature1", "Feature2"]], data["Label"])
# 進(jìn)行預(yù)測(cè)
prediction = model.predict([[feature1, feature2]])
st.write("Prediction:", prediction)
c. 圖像和視頻處理:
import streamlit as st
from PIL import Image
import cv2
# 上傳圖像
uploaded_file = st.file_uploader("Choose an image", type=["jpg", "png"])
if uploaded_file is not None:
# 讀取并顯示圖像
image = Image.open(uploaded_file)
st.image(image, caption="Uploaded Image", use_column_width=True)
# 執(zhí)行圖像處理
grayscale_image = image.convert("L")
st.image(grayscale_image, caption="Grayscale Image", use_column_width=True)
# 處理視頻
video_file = st.file_uploader("Choose a video", type=["mp4"])
if video_file is not None:
# 讀取視頻
video = cv2.VideoCapture(video_file.name)
# 逐幀顯示視頻
while video.isOpened():
ret, frame = video.read()
if not ret:
break
st.image(frame, channels="BGR", caption="Video Frame")
video.release()
可擴(kuò)展性和社區(qū)支持:
Streamlit的設(shè)計(jì)具有高度可擴(kuò)展性。你可以創(chuàng)建自定義組件或無(wú)縫集成現(xiàn)有的JavaScript庫(kù)。
此外,Streamlit還擁有一個(gè)不斷發(fā)展壯大、充滿活力的社區(qū),該社區(qū)積極提供插件、擴(kuò)展和示例應(yīng)用程序。該社區(qū)維護(hù)著一個(gè)Streamlit 組件存儲(chǔ)庫(kù),并分享最佳實(shí)踐,使新手更容易入門(mén)。
結(jié)論:
Streamlit是Python開(kāi)發(fā)人員和數(shù)據(jù)科學(xué)家快速搭建和共享交互式應(yīng)用程序的革命性工具。其簡(jiǎn)單性、易用性和快速開(kāi)發(fā)能力使其成為原型設(shè)計(jì)、展示結(jié)果和創(chuàng)建引人入勝的數(shù)據(jù)體驗(yàn)的理想選擇。
使用Streamlit,你可以專(zhuān)注于數(shù)據(jù)和想法,讓庫(kù)來(lái)處理Web應(yīng)用程序開(kāi)發(fā)的復(fù)雜性。隨著Streamlit的不斷演進(jìn)和日益普及,它仍然是Python生態(tài)系統(tǒng)的令人興奮的工具,能讓用戶釋放數(shù)據(jù)驅(qū)動(dòng)項(xiàng)目的全部潛力。
因此,如果你渴望創(chuàng)建動(dòng)態(tài)和具有視覺(jué)吸引力的應(yīng)用程序,而不想受傳統(tǒng)Web開(kāi)發(fā)的困擾,請(qǐng)嘗試Streamlit,并看看它如何革新數(shù)據(jù)敘述過(guò)程。請(qǐng)參閱Streamlit網(wǎng)站的完整文檔以獲取更多信息。
Streamlit文檔
【Streamlit文檔】:https://docs.streamlit.io/library/get-started