使用Streamlit快速搭建和共享交互式應(yīng)用
介紹:
在數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)領(lǐng)域,向他人展示見解和分享結(jié)果與分析本身同樣重要。然而,創(chuàng)建交互式和用戶友好型的應(yīng)用程序通常需要復(fù)雜的框架和耗時(shí)的開發(fā)過程。Streamlit是一個(gè)Python庫,它簡化了以數(shù)據(jù)為重點(diǎn)的網(wǎng)絡(luò)應(yīng)用程序的創(chuàng)建過程,使開發(fā)人員和數(shù)據(jù)科學(xué)家能夠快速將他們的想法轉(zhuǎn)化為交互式儀表盤和原型。
在本文中,我們將探討Streamlit庫及其主要功能,重點(diǎn)介紹它成為在Python中搭建交互式應(yīng)用程序熱門選擇的原因。
什么是Streamlit?
Streamlit是一個(gè)開源的Python庫,旨在為數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)輕松搭建精美的交互式應(yīng)用程序。有了Streamlit,你就可以創(chuàng)建和部署網(wǎng)絡(luò)應(yīng)用程序,而無需處理復(fù)雜的網(wǎng)絡(luò)開發(fā)問題。它提供了一個(gè)簡單直觀的API,讓你可以專注于編寫代碼和可視化數(shù)據(jù),而不必?fù)?dān)心HTML、CSS或JavaScript。
Streamlit的主要特點(diǎn):
- 易于使用的API:Streamlit的API設(shè)計(jì)簡單明了,開發(fā)人員只需幾行代碼就能創(chuàng)建功能強(qiáng)大的應(yīng)用程序??梢暂p松添加滑塊、復(fù)選框和下拉菜單等交互式小工具,以控制應(yīng)用程序的行為并實(shí)時(shí)更新可視化效果。
- 快速迭代:Streamlit 的開發(fā)工作流程鼓勵(lì)快速迭代。當(dāng)你編寫代碼時(shí),Streamlit的自動(dòng)重新運(yùn)行功能會(huì)即時(shí)反映應(yīng)用程序中的變化,無需手動(dòng)重新加載。這一功能可讓你獲得流暢的開發(fā)體驗(yàn),使你能夠快速進(jìn)行實(shí)驗(yàn)和迭代。
- 廣泛的可視化選項(xiàng):Streamlit提供多種內(nèi)置可視化元素,包括圖表、地圖、表格和自定義組件。你可以使用Matplotlib、Plotly或Altair等流行庫創(chuàng)建交互式圖表,并輕松顯示它們。Streamlit還支持渲染圖片、視頻和交互式 HTML組件等豐富的媒體。
- 共享和部署:使用Streamlit,可以輕松地與他人共享應(yīng)用程序。無論是想將應(yīng)用程序部署到云服務(wù)器上,還是將其作為獨(dú)立的可執(zhí)行文件進(jìn)行共享,Streamlit都能提供無縫的選擇??梢栽贖eroku、AWS等平臺(tái)上部署 Streamlit應(yīng)用程序,甚至可以將其作為Docker容器部署。
Streamlit示例:
本文將通過探索如下示例來展示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)
# 過濾并顯示數(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ù)測
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)建自定義組件或無縫集成現(xiàn)有的JavaScript庫。
此外,Streamlit還擁有一個(gè)不斷發(fā)展壯大、充滿活力的社區(qū),該社區(qū)積極提供插件、擴(kuò)展和示例應(yīng)用程序。該社區(qū)維護(hù)著一個(gè)Streamlit 組件存儲(chǔ)庫,并分享最佳實(shí)踐,使新手更容易入門。
結(jié)論:
Streamlit是Python開發(fā)人員和數(shù)據(jù)科學(xué)家快速搭建和共享交互式應(yīng)用程序的革命性工具。其簡單性、易用性和快速開發(fā)能力使其成為原型設(shè)計(jì)、展示結(jié)果和創(chuàng)建引人入勝的數(shù)據(jù)體驗(yàn)的理想選擇。
使用Streamlit,你可以專注于數(shù)據(jù)和想法,讓庫來處理Web應(yīng)用程序開發(fā)的復(fù)雜性。隨著Streamlit的不斷演進(jìn)和日益普及,它仍然是Python生態(tài)系統(tǒng)的令人興奮的工具,能讓用戶釋放數(shù)據(jù)驅(qū)動(dòng)項(xiàng)目的全部潛力。
因此,如果你渴望創(chuàng)建動(dòng)態(tài)和具有視覺吸引力的應(yīng)用程序,而不想受傳統(tǒng)Web開發(fā)的困擾,請嘗試Streamlit,并看看它如何革新數(shù)據(jù)敘述過程。請參閱Streamlit網(wǎng)站的完整文檔以獲取更多信息。
Streamlit文檔
【Streamlit文檔】:https://docs.streamlit.io/library/get-started