最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python開(kāi)源庫(kù)?Streamlit?應(yīng)用案例

 更新時(shí)間:2025年09月22日 15:48:11   作者:勤奮的知更鳥(niǎo)  
Streamlit是一個(gè)開(kāi)源Python框架,專為數(shù)據(jù)科學(xué)家和工程師設(shè)計(jì),可快速構(gòu)建交互式Web應(yīng)用,無(wú)需前端開(kāi)發(fā)知識(shí),支持?jǐn)?shù)據(jù)可視化、模型集成、文件上傳及多種部署方式,簡(jiǎn)化了數(shù)據(jù)驅(qū)動(dòng)項(xiàng)目開(kāi)發(fā)流程,本文給大家介紹Python開(kāi)源庫(kù)Streamlit應(yīng)用案例,感興趣的朋友一起看看吧

一、引言

在當(dāng)今數(shù)據(jù)驅(qū)動(dòng)的時(shí)代,數(shù)據(jù)科學(xué)家和機(jī)器學(xué)習(xí)工程師常常面臨一個(gè)挑戰(zhàn):如何將他們復(fù)雜而精妙的數(shù)據(jù)分析和模型成果,以一種直觀、交互且易于理解的方式展示給更廣泛的受眾。傳統(tǒng)的 Web 開(kāi)發(fā)技術(shù)雖然強(qiáng)大,但對(duì)于專注于數(shù)據(jù)處理和算法的專業(yè)人員來(lái)說(shuō),往往需要投入大量的時(shí)間和精力去學(xué)習(xí)和掌握 HTML、CSS、JavaScript 等前端技術(shù),這無(wú)疑增加了額外的負(fù)擔(dān),分散了他們?cè)诤诵臉I(yè)務(wù)上的注意力。

Streamlit 的出現(xiàn),猶如一道曙光,為這一困境提供了完美的解決方案。它是一個(gè)開(kāi)源的 Python 框架,旨在讓數(shù)據(jù)科學(xué)家和機(jī)器學(xué)習(xí)工程師能夠快速、輕松地創(chuàng)建交互式 Web 應(yīng)用程序,而無(wú)需深厚的前端開(kāi)發(fā)背景。通過(guò) Streamlit,只需使用熟悉的 Python 語(yǔ)言,就能將數(shù)據(jù)分析腳本轉(zhuǎn)化為功能齊全、美觀大方的 Web 應(yīng)用,實(shí)現(xiàn)數(shù)據(jù)可視化、用戶交互以及模型部署等多種功能,極大地提高了工作效率,加速了數(shù)據(jù)驅(qū)動(dòng)項(xiàng)目的開(kāi)發(fā)和落地。

二、Streamlit 基礎(chǔ)入門(mén)

2.1 安裝 Streamlit

安裝 Streamlit 非常簡(jiǎn)單,如果你已經(jīng)安裝了 Python 和 pip(Python 的包管理工具),那么在命令行中輸入以下命令即可完成安裝:

pip install streamlit

安裝過(guò)程中,pip 會(huì)自動(dòng)下載并安裝 Streamlit 及其所有依賴項(xiàng)。安裝完成后,可以通過(guò)以下命令來(lái)驗(yàn)證安裝是否成功:

streamlit hello

執(zhí)行上述命令后,Streamlit 會(huì)啟動(dòng)一個(gè)示例應(yīng)用程序,并在默認(rèn)瀏覽器中打開(kāi)該應(yīng)用。這個(gè)示例應(yīng)用展示了 Streamlit 的一些基本功能和特性,讓你對(duì) Streamlit 有一個(gè)初步的直觀感受。如果能夠正常看到示例應(yīng)用的頁(yè)面,說(shuō)明 Streamlit 已經(jīng)成功安裝在你的系統(tǒng)中,可以開(kāi)始使用它來(lái)創(chuàng)建自己的應(yīng)用程序了。

2.2 第一個(gè) Streamlit 應(yīng)用

下面我們通過(guò)一個(gè)簡(jiǎn)單的 “Hello, Streamlit!” 應(yīng)用來(lái)了解 Streamlit 應(yīng)用的基本結(jié)構(gòu)和創(chuàng)建過(guò)程。創(chuàng)建一個(gè)新的 Python 文件,例如命名為hello_streamlit.py,在文件中輸入以下代碼:

import streamlit as st
# 設(shè)置頁(yè)面標(biāo)題
st.title('Hello, Streamlit!')
# 顯示一段文本
st.write('This is my first Streamlit app.')

上述代碼中,首先導(dǎo)入了 Streamlit 庫(kù),并將其別名為st,這是使用 Streamlit 的標(biāo)準(zhǔn)做法。然后使用st.title()函數(shù)設(shè)置了應(yīng)用的頁(yè)面標(biāo)題為 “Hello, Streamlit!”,st.write()函數(shù)用于在頁(yè)面上顯示一段文本內(nèi)容。

保存好代碼后,在命令行中進(jìn)入到該 Python 文件所在的目錄,然后執(zhí)行以下命令來(lái)運(yùn)行這個(gè) Streamlit 應(yīng)用:

streamlit run hello_streamlit.py

命令執(zhí)行后,Streamlit 會(huì)啟動(dòng)一個(gè)本地服務(wù)器,并自動(dòng)在默認(rèn)瀏覽器中打開(kāi)應(yīng)用頁(yè)面。你將看到頁(yè)面上顯示著設(shè)置的標(biāo)題和文本內(nèi)容,這就是一個(gè)最簡(jiǎn)單的 Streamlit 應(yīng)用。每次修改代碼并保存后,Streamlit 應(yīng)用會(huì)自動(dòng)實(shí)時(shí)更新頁(yè)面顯示,無(wú)需手動(dòng)重啟服務(wù)器,這大大提高了開(kāi)發(fā)效率,讓你能夠快速看到代碼修改后的效果。

2.3 Streamlit 應(yīng)用的運(yùn)行機(jī)制

當(dāng)你執(zhí)行streamlit run命令時(shí),Streamlit 會(huì)啟動(dòng)一個(gè)本地服務(wù)器。這個(gè)服務(wù)器會(huì)讀取你編寫(xiě)的 Python 腳本,并解析其中的 Streamlit 代碼。Streamlit 會(huì)根據(jù)代碼中定義的各種元素(如標(biāo)題、文本、圖表、交互組件等),在瀏覽器端生成相應(yīng)的 HTML、CSS 和 JavaScript 代碼,從而構(gòu)建出一個(gè)完整的 Web 應(yīng)用界面。

Streamlit 的一個(gè)重要特性是實(shí)時(shí)更新。它會(huì)持續(xù)監(jiān)控 Python 腳本文件的變化,一旦檢測(cè)到文件被修改并保存,就會(huì)立即重新運(yùn)行腳本,并將新的界面更新推送到瀏覽器端。這種實(shí)時(shí)反饋機(jī)制使得開(kāi)發(fā)過(guò)程變得非常流暢,你可以快速嘗試不同的想法,修改代碼后馬上就能看到效果,就像在使用一個(gè)交互式的 Python shell 一樣方便。同時(shí),Streamlit 還負(fù)責(zé)處理與瀏覽器的通信、用戶輸入的接收和處理等底層細(xì)節(jié),開(kāi)發(fā)者無(wú)需關(guān)心這些復(fù)雜的 Web 開(kāi)發(fā)技術(shù),只需專注于用 Python 編寫(xiě)應(yīng)用的邏輯和展示內(nèi)容即可。

三、Streamlit 核心功能詳解

3.1 豐富的文本與標(biāo)題展示

在 Streamlit 中,文本和標(biāo)題的展示是構(gòu)建應(yīng)用的基礎(chǔ)。除了前面示例中使用的st.title()和st.write()函數(shù)外,還有其他多種方式來(lái)呈現(xiàn)不同樣式和層次的文本。

  • st.header():用于創(chuàng)建一級(jí)標(biāo)題,字體大小小于st.title(),通常用于劃分頁(yè)面的主要部分。例如:
st.header('This is a header')
  • st.subheader():創(chuàng)建二級(jí)標(biāo)題,字體大小小于st.header(),用于進(jìn)一步細(xì)分內(nèi)容。示例:
st.subheader('This is a subheader')
  • st.markdown():這個(gè)函數(shù)非常強(qiáng)大,它允許你使用 Markdown 語(yǔ)法來(lái)編寫(xiě)文本內(nèi)容。Markdown 是一種輕量級(jí)的標(biāo)記語(yǔ)言,通過(guò)簡(jiǎn)單的符號(hào)(如#表示標(biāo)題,*表示列表等)就能創(chuàng)建出具有豐富格式的文本。例如:
st.markdown('### This is a Markdown - style header')
st.markdown('* This is an item in an unordered list')
st.markdown('1. This is an item in an ordered list')

通過(guò)st.markdown(),你可以輕松實(shí)現(xiàn)文本的加粗、斜體、鏈接、圖片嵌入等復(fù)雜格式。例如,要顯示加粗文本可以使用**text**,顯示斜體文本可以使用*text*,添加鏈接可以使用[link text](url)的格式。

3.2 數(shù)據(jù)可視化

數(shù)據(jù)可視化是 Streamlit 的一大核心功能,它使得數(shù)據(jù)科學(xué)家能夠?qū)?fù)雜的數(shù)據(jù)以直觀、易懂的圖表形式展示出來(lái)。Streamlit 支持多種流行的數(shù)據(jù)可視化庫(kù),如 Matplotlib、Seaborn、Plotly、Altair 等,并且能夠與這些庫(kù)無(wú)縫集成,讓你可以使用熟悉的繪圖語(yǔ)法在 Streamlit 應(yīng)用中創(chuàng)建精美的可視化圖表。

  • 使用 Matplotlib 進(jìn)行可視化:Matplotlib 是 Python 中最常用的繪圖庫(kù)之一。在 Streamlit 中使用 Matplotlib 非常簡(jiǎn)單,首先需要導(dǎo)入 Matplotlib 庫(kù),然后創(chuàng)建圖表對(duì)象并進(jìn)行繪圖操作,最后使用st.pyplot()函數(shù)將圖表顯示在 Streamlit 應(yīng)用中。例如,繪制一個(gè)簡(jiǎn)單的折線圖:
import streamlit as st
import matplotlib.pyplot as plt
import numpy as np
# 生成數(shù)據(jù)
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 創(chuàng)建圖表
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Sine Wave')
ax.set_xlabel('X')
ax.set_ylabel('Y')
# 在Streamlit中顯示圖表
st.pyplot(fig)
  • 使用 Seaborn 進(jìn)行可視化:Seaborn 是基于 Matplotlib 的統(tǒng)計(jì)數(shù)據(jù)可視化庫(kù),它提供了更高級(jí)、美觀的繪圖風(fēng)格。同樣,在 Streamlit 中使用 Seaborn 也很便捷。例如,繪制一個(gè) Seaborn 的散點(diǎn)圖:
import streamlit as st
import seaborn as sns
import pandas as pd
import numpy as np
# 生成數(shù)據(jù)
data = pd.DataFrame({'x': np.random.randn(100),'y': np.random.randn(100)
})
# 創(chuàng)建Seaborn散點(diǎn)圖
fig, ax = plt.subplots()
sns.scatterplot(x='x', y='y', data=data, ax=ax)
ax.set_title('Scatter Plot')
# 在Streamlit中顯示圖表
st.pyplot(fig)
  • 使用 Plotly 創(chuàng)建交互式圖表:Plotly 生成的圖表具有交互性,用戶可以在瀏覽器中通過(guò)鼠標(biāo)操作(如縮放、平移、懸停查看數(shù)據(jù)點(diǎn)信息等)來(lái)更好地探索數(shù)據(jù)。在 Streamlit 中使用 Plotly,首先要導(dǎo)入 Plotly 庫(kù),然后創(chuàng)建 Plotly 圖表對(duì)象,最后使用st.plotly_chart()函數(shù)展示圖表。例如,創(chuàng)建一個(gè) Plotly 的柱狀圖:
import streamlit as st
import plotly.express as px
import pandas as pd
# 生成數(shù)據(jù)
data = pd.DataFrame({
'Category': ['A', 'B', 'C', 'D'],
'Value': [25, 40, 15, 30]
})
# 創(chuàng)建Plotly柱狀圖
fig = px.bar(data, x='Category', y='Value', title='Bar Chart')
# 在Streamlit中顯示圖表
st.plotly_chart(fig)
  • 使用 Altair 進(jìn)行可視化:Altair 是一個(gè)聲明式統(tǒng)計(jì)可視化庫(kù),其語(yǔ)法簡(jiǎn)潔直觀。在 Streamlit 中使用 Altair 時(shí),創(chuàng)建好 Altair 圖表對(duì)象后,使用st.altair_chart()函數(shù)進(jìn)行展示。例如,繪制一個(gè) Altair 的折線圖:
import streamlit as st
import altair as alt
import pandas as pd
import numpy as np
# 生成數(shù)據(jù)
data = pd.DataFrame({
'x': np.linspace(0, 10, 100),
'y': np.sin(np.linspace(0, 10, 100))
})
# 創(chuàng)建Altair折線圖
chart = alt.Chart(data).mark_line().encode(
x='x',y='y'
).properties(title='Altair Line Chart')
# 在Streamlit中顯示圖表
st.altair_chart(chart)

3.3 交互式組件

Streamlit 提供了豐富的交互式組件,這些組件允許用戶與應(yīng)用進(jìn)行交互,從而實(shí)現(xiàn)更加動(dòng)態(tài)和個(gè)性化的數(shù)據(jù)展示與分析。通過(guò)這些交互式組件,用戶可以輸入數(shù)據(jù)、選擇選項(xiàng)、調(diào)整參數(shù)等,應(yīng)用會(huì)根據(jù)用戶的操作實(shí)時(shí)更新顯示內(nèi)容。

  • 按鈕(Button):st.button()函數(shù)用于創(chuàng)建一個(gè)按鈕。當(dāng)按鈕被點(diǎn)擊時(shí),可以觸發(fā)相應(yīng)的操作。例如,創(chuàng)建一個(gè)簡(jiǎn)單的按鈕,并在按鈕被點(diǎn)擊時(shí)顯示一條消息:
import streamlit as st
if st.button('Click me'):
  st.write('You clicked the button!')
  • 文本輸入框(Text Input):st.text_input()函數(shù)創(chuàng)建一個(gè)文本輸入框,用戶可以在其中輸入文本內(nèi)容。應(yīng)用可以獲取用戶輸入的文本并進(jìn)行處理。例如,獲取用戶輸入的名字并進(jìn)行問(wèn)候:
import streamlit as st
name = st.text_input('Enter your name')
if name:
  st.write(f'Hello, {name}!')
  • 數(shù)字輸入框(Number Input):st.number_input()函數(shù)用于創(chuàng)建一個(gè)數(shù)字輸入框,用戶可以在其中輸入數(shù)字??梢栽O(shè)置輸入框的最小值、最大值、默認(rèn)值等參數(shù)。例如,創(chuàng)建一個(gè)數(shù)字輸入框,讓用戶輸入年齡:
import streamlit as st
age = st.number_input('Enter your age', min_value = 0, max_value = 120, value = 25)
st.write(f'Your age is {age}')
  • 滑塊(Slider):st.slider()函數(shù)創(chuàng)建一個(gè)滑塊,用戶可以通過(guò)拖動(dòng)滑塊來(lái)選擇一個(gè)范圍內(nèi)的值??梢栽O(shè)置滑塊的最小值、最大值、步長(zhǎng)、默認(rèn)值等。例如,使用滑塊來(lái)調(diào)整正弦波的頻率:
import streamlit as st
import numpy as np
import matplotlib.pyplot as plt
# 設(shè)置頁(yè)面標(biāo)題
st.title('Sine Wave with Adjustable Frequency')
# 創(chuàng)建滑塊,允許用戶調(diào)整頻率
frequency = st.slider('Select frequency:', 1, 10, 5)
# 生成數(shù)據(jù)
x = np.linspace(0, 2 * np.pi, 1000)
y = np.sin(frequency * x)
# 繪制圖表
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Sine Wave')
ax.set_xlabel('X')
ax.set_ylabel('Y')
# 在Streamlit中顯示圖表
st.pyplot(fig)
  • 下拉選擇框(Selectbox):st.selectbox()函數(shù)創(chuàng)建一個(gè)下拉選擇框,用戶可以從預(yù)定義的選項(xiàng)中選擇一個(gè)。例如,創(chuàng)建一個(gè)下拉選擇框,讓用戶選擇喜歡的顏色:
import streamlit as st
colors = ['Red', 'Green', 'Blue', 'Yellow']
selected_color = st.selectbox('Select your favorite color', colors)
st.write(f'You selected {selected_color}')
  • 多選框(Multiselect):st.multiselect()函數(shù)創(chuàng)建一個(gè)多選框,用戶可以從多個(gè)選項(xiàng)中選擇一個(gè)或多個(gè)。例如,創(chuàng)建一個(gè)多選框,讓用戶選擇喜歡的水果:
import streamlit as st
fruits = ['Apple', 'Banana', 'Orange', 'Mango', 'Strawberry']
selected_fruits = st.multiselect('Select your favorite fruits', fruits)
st.write(f'You selected {selected_fruits}')
  • 復(fù)選框(Checkbox):st.checkbox()函數(shù)創(chuàng)建一個(gè)復(fù)選框,用戶可以勾選或取消勾選。例如,使用復(fù)選框來(lái)控制圖表的顯示:
import streamlit as st
import matplotlib.pyplot as plt
import numpy as np
# 設(shè)置頁(yè)面標(biāo)題
st.title('Show/Hide Plot')
# 創(chuàng)建復(fù)選框
show_plot = st.checkbox('Show plot')
if show_plot:
# 生成數(shù)據(jù)
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 繪制圖表
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Sine Wave')
ax.set_xlabel('X')
ax.set_ylabel('Y')
# 在Streamlit中顯示圖表
st.pyplot(fig)

3.4 文件上傳功能

在數(shù)據(jù)處理和分析中,經(jīng)常需要處理用戶上傳的文件。Streamlit 提供了便捷的文件上傳功能,允許用戶將本地文件上傳到應(yīng)用中進(jìn)行處理。使用st.file_uploader()函數(shù)可以創(chuàng)建一個(gè)文件上傳組件。例如,創(chuàng)建一個(gè)文件上傳組件,用于上傳 CSV 文件,并讀取和顯示文件內(nèi)容:

import streamlit as st
import pandas as pd
# 設(shè)置頁(yè)面標(biāo)題
st.title('File Upload Example')
# 創(chuàng)建文件上傳組件
uploaded_file = st.file_uploader('Choose a CSV file', type=['csv'])
if uploaded_file is not None:
try:
# 使用pandas讀取CSV文件
data = pd.read_csv(uploaded_file)
st.write('File uploaded successfully. Here is the data:')
st.dataframe(data)
except Exception as e:
st.write(f'Error reading the file: {e}')

上述代碼中,st.file_uploader()函數(shù)的第一個(gè)參數(shù)是上傳組件的標(biāo)題,type=['csv']表示只允許上傳 CSV 文件。當(dāng)用戶選擇并上傳一個(gè)文件后,uploaded_file變量將包含上傳文件的相關(guān)信息。通過(guò)pd.read_csv(uploaded_file)可以讀取 CSV 文件的內(nèi)容,并使用st.dataframe()函數(shù)將數(shù)據(jù)以表格形式顯示在應(yīng)用頁(yè)面上。如果讀取文件過(guò)程中出現(xiàn)錯(cuò)誤,會(huì)捕獲異常并顯示相應(yīng)的錯(cuò)誤信息。Streamlit 還支持上傳其他類型的文件,如 Excel 文件(使用pandas的read_excel函數(shù)讀取)、圖像文件(使用PIL庫(kù)或OpenCV庫(kù)進(jìn)行處理)等,具體的處理方式根據(jù)文件類型和業(yè)務(wù)需求而定。

3.5 布局與容器

合理的布局和容器使用可以使 Streamlit 應(yīng)用的界面更加整潔、美觀和易于使用。Streamlit 提供了多種布局和容器選項(xiàng),幫助你更好地組織應(yīng)用中的元素。

  • 列布局(Columns):使用st.columns()函數(shù)可以將頁(yè)面分為多列,在每一列中可以獨(dú)立放置不同的組件。例如,創(chuàng)建兩列布局,在第一列中顯示一個(gè)標(biāo)題,在第二列中顯示一個(gè)按鈕:
import streamlit as st
# 創(chuàng)建兩列布局
col1, col2 = st.columns(2)
with col1:
st.title('Column 1')
with col2:
if st.button('Button in Column 2'):
st.write('Button in Column 2 clicked')

st.columns()函數(shù)接受一個(gè)整數(shù)參數(shù),表示要?jiǎng)?chuàng)建的列數(shù)。這里將頁(yè)面分為兩列,通過(guò)with語(yǔ)句分別在不同的列中添加組件。列的寬度會(huì)根據(jù)內(nèi)容自動(dòng)調(diào)整,也可以通過(guò)傳遞一個(gè)包含列寬比例的列表來(lái)指定列寬。例如,col1, col2 = st.columns([3, 1])表示第一列寬度是第二列寬度的三倍。

  • 容器(Container):st.container()函數(shù)創(chuàng)建一個(gè)容器,你可以在容器中放置多個(gè)組件,將相關(guān)的組件組合在一起。容器可以幫助你更好地組織和管理應(yīng)用的結(jié)構(gòu)。例如,創(chuàng)建一個(gè)容器,在容器中添加標(biāo)題、文本和按鈕:
import streamlit as st
# 創(chuàng)建容器
container = st.container()
with container:
  st.title('Container Example')
  st.write('This is some text inside the container.')
  if st.button('Button in Container'):
    st.write('Button in container clicked')

容器可以嵌套使用,從而創(chuàng)建更復(fù)雜的布局結(jié)構(gòu)。例如,可以在一個(gè)容器中再創(chuàng)建列布局,然后在列中放置其他組件。

  • 側(cè)邊欄(Sidebar):側(cè)邊欄是 Streamlit 應(yīng)用中常用的布局元素,通常用于放置導(dǎo)航菜單、配置選項(xiàng)等。使用st.sidebar屬性可以在側(cè)邊欄中添加各種組件。例如,在側(cè)邊欄中添加一個(gè)標(biāo)題和一個(gè)下拉選擇框:
import streamlit as st
# 在側(cè)邊欄添加標(biāo)題
st.sidebar.title("應(yīng)用設(shè)置")
# 在側(cè)邊欄添加下拉選擇框
option = st.sidebar.selectbox(
    '請(qǐng)選擇一個(gè)選項(xiàng)',
    ['選項(xiàng)1', '選項(xiàng)2', '選項(xiàng)3', '選項(xiàng)4']
)
# 在主界面顯示選擇結(jié)果
st.write(f'你選擇了: {option}')

四、Streamlit 高級(jí)特性

**

4.1 狀態(tài)管理

在復(fù)雜的 Streamlit 應(yīng)用中,管理用戶交互產(chǎn)生的狀態(tài)至關(guān)重要。Streamlit 提供了st.session_state來(lái)幫助開(kāi)發(fā)者處理狀態(tài)相關(guān)的問(wèn)題。st.session_state是一個(gè)類似于字典的對(duì)象,用于存儲(chǔ)和管理應(yīng)用運(yùn)行過(guò)程中的各種狀態(tài)信息,比如用戶輸入的值、按鈕的點(diǎn)擊次數(shù)、數(shù)據(jù)的處理中間結(jié)果等 。

舉個(gè)例子,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的計(jì)數(shù)器功能:

import streamlit as st
if 'count' not in st.session_state:
st.session_state.count = 0
def increment():
st.session_state.count += 1
st.button('Increment', on_click=increment)
st.write(f'Count: {st.session_state.count}')

在上述代碼中,首先檢查st.session_state中是否存在count鍵,如果不存在則初始化其值為 0。當(dāng)用戶點(diǎn)擊按鈕時(shí),觸發(fā)increment函數(shù),更新st.session_state.count的值,從而實(shí)現(xiàn)計(jì)數(shù)器的功能。并且,即使頁(yè)面因用戶的其他操作重新加載,st.session_state中的狀態(tài)也會(huì)被保留,確保應(yīng)用狀態(tài)的一致性。

4.2 自定義主題

Streamlit 默認(rèn)提供了簡(jiǎn)潔的主題樣式,但開(kāi)發(fā)者可以根據(jù)項(xiàng)目需求和個(gè)人喜好來(lái)自定義應(yīng)用的主題。通過(guò)創(chuàng)建并配置.streamlit/config.toml文件,能夠修改應(yīng)用的背景顏色、字體樣式、組件顏色等外觀屬性。

創(chuàng)建.streamlit文件夾(如果不存在),在其中新建config.toml文件,并添加以下內(nèi)容來(lái)修改主題:

[theme]
base = "light"
primaryColor = "#FF5733"
backgroundColor = "#F8F9FA"
secondaryBackgroundColor = "#E9ECEF"
textColor = "#212529"
font = "sans serif"

上述配置中,base設(shè)置主題為淺色模式;primaryColor定義了主要顏色;backgroundColor和secondaryBackgroundColor分別設(shè)置背景和二級(jí)背景顏色;textColor設(shè)置文本顏色;font指定字體。保存文件后,重新運(yùn)行 Streamlit 應(yīng)用,就能看到自定義主題的效果。此外,還可以通過(guò)編程的方式在 Python 代碼中動(dòng)態(tài)設(shè)置主題,為應(yīng)用提供更靈活的外觀定制方案。

4.3 與機(jī)器學(xué)習(xí)模型集成

Streamlit 強(qiáng)大之處還在于能夠輕松集成機(jī)器學(xué)習(xí)模型,將模型預(yù)測(cè)功能嵌入到 Web 應(yīng)用中,實(shí)現(xiàn)模型的可視化部署。以 Scikit-learn 庫(kù)訓(xùn)練的簡(jiǎn)單線性回歸模型為例,展示如何進(jìn)行集成:

import streamlit as st
import numpy as np
from sklearn.linear_model import LinearRegression
# 生成模擬數(shù)據(jù)
x = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 4, 6, 8, 10])
# 訓(xùn)練線性回歸模型
model = LinearRegression()
model.fit(x, y)
# Streamlit應(yīng)用
st.title("線性回歸預(yù)測(cè)")
user_input = st.number_input("輸入x值", min_value=0.0, max_value=10.0)
if user_input:
input_data = np.array([user_input]).reshape(-1, 1)
prediction = model.predict(input_data)
st.write(f"預(yù)測(cè)的y值為: {prediction[0]}")

在這個(gè)示例中,先使用 Scikit-learn 訓(xùn)練一個(gè)簡(jiǎn)單的線性回歸模型,然后在 Streamlit 應(yīng)用中創(chuàng)建一個(gè)數(shù)字輸入框接收用戶輸入的x值,將該值傳入訓(xùn)練好的模型進(jìn)行預(yù)測(cè),并展示預(yù)測(cè)結(jié)果。實(shí)際應(yīng)用中,無(wú)論是復(fù)雜的深度學(xué)習(xí)模型,還是其他機(jī)器學(xué)習(xí)模型,都可以通過(guò)類似的方式與 Streamlit 集成,為用戶提供直觀的模型預(yù)測(cè)交互界面。

五、Streamlit 應(yīng)用部署

完成本地開(kāi)發(fā)后,需要將 Streamlit 應(yīng)用部署到服務(wù)器上,以便讓更多用戶訪問(wèn)。以下是幾種常見(jiàn)的部署方式:

5.1 Streamlit 社區(qū)云

Streamlit 社區(qū)云是最便捷的部署方式,它完全免費(fèi)且無(wú)需配置服務(wù)器。只需將應(yīng)用代碼上傳到 GitHub 倉(cāng)庫(kù),然后在 Streamlit 社區(qū)云平臺(tái)進(jìn)行簡(jiǎn)單的鏈接設(shè)置,即可完成部署。具體步驟如下:

  1. 將 Streamlit 應(yīng)用的所有代碼和依賴項(xiàng)(如requirements.txt文件)上傳到一個(gè)公開(kāi)的 GitHub 倉(cāng)庫(kù)。
  1. 訪問(wèn) Streamlit 社區(qū)云網(wǎng)站,使用 GitHub 賬號(hào)登錄。
  1. 按照平臺(tái)提示,選擇要部署的 GitHub 倉(cāng)庫(kù),配置相關(guān)參數(shù)(如分支、運(yùn)行命令等)。
  1. 點(diǎn)擊部署按鈕,等待平臺(tái)自動(dòng)構(gòu)建和部署應(yīng)用,部署完成后即可獲得應(yīng)用的訪問(wèn)鏈接。

5.2 部署到 Heroku

Heroku 是一個(gè)流行的云平臺(tái)即服務(wù)(PaaS),支持多種編程語(yǔ)言應(yīng)用的部署。部署 Streamlit 應(yīng)用到 Heroku 的步驟如下:

  1. 注冊(cè)并安裝 Heroku 命令行工具。
  1. 在應(yīng)用項(xiàng)目目錄下,創(chuàng)建Procfile文件(無(wú)文件擴(kuò)展名),并添加內(nèi)容web: streamlit run your_app.pyyour_app.py替換為實(shí)際的應(yīng)用主文件)。
  1. 創(chuàng)建requirements.txt文件,列出應(yīng)用所需的所有 Python 依賴項(xiàng),如streamlit、numpy、pandas等。
  1. 初始化 Git 倉(cāng)庫(kù)(如果尚未初始化),提交代碼更改。
  1. 使用 Heroku 命令行工具登錄賬號(hào),創(chuàng)建新的應(yīng)用實(shí)例,將本地代碼推送到 Heroku 遠(yuǎn)程倉(cāng)庫(kù),觸發(fā)應(yīng)用的構(gòu)建和部署。

5.3 其他云平臺(tái)

除了上述方式,還可以將 Streamlit 應(yīng)用部署到 AWS、Google Cloud Platform、Microsoft Azure 等主流云平臺(tái)。以 AWS 為例,通常需要?jiǎng)?chuàng)建 EC2 實(shí)例或使用 AWS Elastic Beanstalk 等服務(wù),配置 Python 運(yùn)行環(huán)境,安裝 Streamlit 及其依賴,上傳應(yīng)用代碼,并進(jìn)行端口映射等相關(guān)配置,從而實(shí)現(xiàn)應(yīng)用的穩(wěn)定運(yùn)行和對(duì)外訪問(wèn) 。

六、Streamlit 實(shí)際應(yīng)用案例

6.1 數(shù)據(jù)探索與分析應(yīng)用

某電商公司使用 Streamlit 開(kāi)發(fā)了一個(gè)數(shù)據(jù)探索應(yīng)用,幫助業(yè)務(wù)人員快速分析銷售數(shù)據(jù)。通過(guò)文件上傳功能,業(yè)務(wù)人員可以上傳不同時(shí)間段的銷售 CSV 文件。應(yīng)用中利用交互式組件,如日期選擇器篩選銷售日期范圍,下拉選擇框選擇產(chǎn)品類別;結(jié)合數(shù)據(jù)可視化庫(kù),以柱狀圖展示各產(chǎn)品銷售額對(duì)比,折線圖呈現(xiàn)銷售額隨時(shí)間的變化趨勢(shì)。通過(guò)這些功能,業(yè)務(wù)人員能夠直觀地發(fā)現(xiàn)銷售數(shù)據(jù)中的規(guī)律和問(wèn)題,為決策提供有力支持。

6.2 機(jī)器學(xué)習(xí)模型演示應(yīng)用

一個(gè)機(jī)器學(xué)習(xí)研究團(tuán)隊(duì)開(kāi)發(fā)了一個(gè)圖像分類模型,使用 Streamlit 創(chuàng)建應(yīng)用來(lái)演示模型的效果。用戶可以通過(guò)文件上傳功能上傳本地圖片,應(yīng)用將圖片傳入模型進(jìn)行分類預(yù)測(cè),并在頁(yè)面上顯示原始圖片和預(yù)測(cè)結(jié)果。同時(shí),應(yīng)用還展示了模型的訓(xùn)練數(shù)據(jù)信息、評(píng)估指標(biāo)等內(nèi)容,方便用戶了解模型的性能和特點(diǎn),這種直觀的演示方式有助于向非技術(shù)人員展示機(jī)器學(xué)習(xí)模型的價(jià)值。

七、總結(jié)與展望

Streamlit 憑借其簡(jiǎn)單易用、功能強(qiáng)大的特點(diǎn),成為數(shù)據(jù)科學(xué)家和機(jī)器學(xué)習(xí)工程師進(jìn)行快速原型開(kāi)發(fā)和應(yīng)用部署的首選工具之一。從基礎(chǔ)的安裝使用、豐富的核心功能,到高級(jí)的狀態(tài)管理、主題定制以及與機(jī)器學(xué)習(xí)模型的集成,再到多種靈活的部署方式和豐富的實(shí)際應(yīng)用案例,Streamlit 為數(shù)據(jù)驅(qū)動(dòng)的 Web 應(yīng)用開(kāi)發(fā)提供了一站式解決方案。

隨著開(kāi)源社區(qū)的不斷發(fā)展和更新迭代,未來(lái) Streamlit 有望引入更多創(chuàng)新功能,進(jìn)一步優(yōu)化性能和用戶體驗(yàn),與更多的工具和平臺(tái)實(shí)現(xiàn)深度集成。無(wú)論是數(shù)據(jù)科學(xué)領(lǐng)域的新手還是經(jīng)驗(yàn)豐富的專業(yè)人士,都能在 Streamlit 的世界中找到屬于自己的應(yīng)用開(kāi)發(fā)樂(lè)趣和價(jià)值,讓數(shù)據(jù)和模型以更直觀、更交互的方式展現(xiàn)出來(lái),推動(dòng)數(shù)據(jù)驅(qū)動(dòng)的創(chuàng)新和發(fā)展。

八、合規(guī)建議

Streamlit采用**Apache License 2.0**開(kāi)源許可協(xié)議, 完整許可文本見(jiàn):https://github.com/streamlit/streamlit/blob/main/LICENSE

九、參考資料

《Python 前端框架/工具合集》

到此這篇關(guān)于Python開(kāi)源庫(kù) Streamlit 詳細(xì)介紹的文章就介紹到這了,更多相關(guān)Python開(kāi)源庫(kù) Streamlit內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

丹凤县| 岑溪市| 澄江县| 巴东县| 昭苏县| 花莲市| 西城区| 怀远县| 昌宁县| 永善县| 个旧市| 勐海县| 淮阳县| 高邮市| 南昌市| 涡阳县| 阿巴嘎旗| 陆丰市| 公安县| 开化县| 阿尔山市| 汪清县| 越西县| 南康市| 克什克腾旗| 景德镇市| 苏州市| 枣强县| 子洲县| 宁乡县| 石家庄市| 新丰县| 藁城市| 永宁县| 枝江市| 邮箱| 孟津县| 定襄县| 荥阳市| 德格县| 泽州县|