摘要
本文探討 Streamlit 如何透過互動式網頁應用重塑資料科學領域的重要性與實用價值。 歸納要點:
- Streamlit 提供強大的視覺化和互動功能,讓資料科學家能夠創建引人入勝的網頁應用程式。
- 無縫整合機器學習模型,使得快速部署成為可能,提升資料科學應用的開發效率。
- 透過靈活的元件和 LaTeX 支援,Streamlit 能提升使用者介面的直觀性及數學公式的專業呈現。
Streamlit:資料科學互動式應用程式的福音
在資料科學這個快速發展的領域中,迅速原型設計和分享互動式資料應用程式的能力至關重要。此時出現了 Streamlit,一個開源框架,它簡化了資料科學和機器學習專案的網頁應用程式建立。在這篇文章中,我們將探討 Streamlit 如何改變資料科學家和分析師展示其研究結果與見解的方式。Streamlit 是一個 Python 函式庫,讓你能輕鬆建立互動式網頁應用程式。憑藉其簡單明瞭的語法和強大的功能,Streamlit 使得資料科學家能夠僅用幾行程式碼就將資料指令碼轉換為可分享的網頁應用程式。
使用便利性:Streamlit 的直觀 API 讓你能快速構建並部署網頁應用,而無需深入了解網頁開發知識。
互動元件:輕鬆新增滑桿、按鈕、文字輸入等,以創造互動式使用者介面。
實時更新:當你修改程式碼時,Streamlit 會自動實時更新應用,使得快速原型設計與迭代成為可能。
與流行函式庫整合:無縫整合如 Pandas、NumPy、Matplotlib、Plotly 等函式庫。
**結合雲端運算的擴充性:** Streamlit 可與雲端平台整合,例如 AWS、Azure 和 Google Cloud,提供靈活的擴充能力,以便處理大量資料和使用者。這降低了大型資料處理及線上展示應用程式的成本和複雜性。
**人工智慧驅動的見解生成:** Streamlit 正與人工智慧技術整合,例如自然語言處理和機器學習演演算法。這讓資料科學家能打造更強大的互動式應用,自動產生見解、建議行動並協助使用者探索資料。
我們在研究許多文章後,彙整重點如下
- Streamlit是一個開放原始碼的Python框架,專為數據科學家和開發者設計。
- 使用Streamlit可以快速將數據分析腳本轉換為互動式網頁應用,無需任何網頁開發經驗。
- 它提供簡單直觀的API,讓使用者能輕鬆創建資料科學及機器學習應用。
- 內建多種元件和小工具,可以輕鬆生成各類資料視覺化圖表。
- 在短時間內,使用者可以獨立開發和部署自己的資料應用程式。
- Streamlit特別適合展示數據分析結果,使非技術背景的人也能理解複雜的數據。
在這個快速變化的科技時代,掌握如何利用工具來展示我們所收集到的數據是非常重要的。Streamlit作為一個友好的平台,不僅讓數據科學家更容易地分享他們的成果,也使得不具備編程背景的人也能欣賞到背後深刻的信息。這樣的一個工具,無疑讓每個人都能參與到數據探索中來,共同推進知識的界限。
資料科學家應該考慮使用 Streamlit 應用程式,原因有很多。Streamlit 應用程式提供了一個無與倫比的優勢,使得使用者能夠在不深入傳統網頁開發複雜性的情況下,輕鬆開發互動性網頁應用程式。只需幾行程式碼,利用 `import streamlit` 命令,資料科學家便能夠輕鬆建立引人入勝的網頁應用程式。「Sweet Streamlit Hello App」是完美的入門範例,展示了該平台直觀的介面和功能。
Streamlit:資料科學家最佳的模型整合與應用程式開發工具
對於資料科學領域的專業人士來說,Streamlit 是一個無價的工具,可以在幾乎不需要程式設計知識的情況下部署模型。其使用者友好的特性使得資料科學家能夠輕鬆分享他們的洞見和分析。在軟體建立的領域中,提供無縫的使用者體驗至關重要。Streamlit 應用程式簡化了這一過程,使資料密集型移動應用和網頁應用可以快速開發有效的使用者介面。透過利用 Streamlit 的功能,資料科學家可以專注於他們在資料分析和模型建立方面的核心專業,而將他們的工作無縫轉換為易於互動、友好的應用,以便與同事和利益相關者分享。**專案 1:整合機器學習模型的便利性**
Streamlit 獨特之處在於簡化機器學習模型的整合。透過其直觀介面,使用者無需撰寫複雜程式碼,即可輕鬆將訓練好的模型部署到應用中。這種便利大幅降低了開發門檻,讓資料科學家能夠專注於模型開發和最佳化,而不必額外負擔大量程式開發工作。
**專案 2:與外部資料庫和 API 的無縫互動**
Streamlit 允許應用與外部資料庫及 API 無縫互動,進一步擴充套件了資料分析及模型部署的可能性。藉由連線資料庫,資料科學家能即時存取資料並進行動態分析;而整合外部 API 則提供了一種擴充應用功能的方法,例如資料視覺化或模型訓練等功能。這種靈活性使得 Streamlit 成為開發複雜且全面性的資料應用程式理想工具。
可以透過以下命令輕鬆使用 pip 安裝 Streamlit:
$ pip install streamlit
要執行或啟動一個 Streamlit 應用,我們使用 `streamlit run` 命令,後接包含程式碼的 Python 檔案名稱。在我們的情況下,主要檔案將是 `app.py`。
$ streamlit run app.py
以 Streamlit 構築使用者介面:小工具、資料顯示和使用者輸入
Streamlit 提供了我們可以用來構建使用者介面的 UI 元素,這些元素以小工具(Widgets)的形式呈現。讓我們來看看幾個將會使用的 Streamlit 小工具。它可以用來顯示網頁的標題,這類似於 HTML 中的 <h1> 標籤。我們也能夠在網頁上印出任何資料或文字。正如其名稱所暗示,我們傳遞給此函式的字串同樣支援 Markdown 語法,因此我們可以使用 Markdown 語法,而該函式則會在網頁上渲染相應的內容。當我們需要從使用者那裡讀取文字時,可以使用 text_input 函式。它接受兩個引數,即該輸入框的標籤和輸入欄位中的佔位符文字。我們可以將輸入框中填寫的文字賦值給一個變數進行儲存。
隨著 AI 技術的不斷進步,例如自然語言處理(NLP)和電腦視覺(CV),這些技術正在被整合到 Streamlit 之中,使得介面設計更具智慧與直觀。例如,NLP 可以協助使用者更輕鬆地輸入文字,而 CV 則可自動化資料視覺化過程。Streamlit 最近推出了即時串流功能,使得開發人員能夠在應用程式執行時更新介面,讓使用者即時看到資料及結果變化,進一步提升了互動性和動態效果。
sepal_length = st.text_input('Enter sepal_length', '')
在這個文字框中,使用者每次輸入或編輯文字時,其值會自動更新到 `sepal_length` 變數中,這樣就可以像使用任何普通字串一樣在程式碼中的任何地方使用它。此段程式碼建立了一個具有指定標籤的按鈕。當使用者點選按鈕時,Streamlit 應用將按鈕的值更新為 True,因此我們可以利用這段程式碼,在使用者點選特定按鈕時執行某個函式。
if st.button("Predict"):
predict_class()
5. st.subheader 是一個在 Streamlit 中的函式,允許您在您的 Streamlit 應用程式中建立子標題。子標題對於將內容分成不同的部分和提供應用程式的結構非常有用,使得使用者更容易導航和理解您應用程式中的各個部分。
import streamlit as st st.subheader('This is a subheader with a divider', divider='rainbow') st.subheader('_Streamlit_ is :blue[cool] :sunglasses:')
Streamlit 中的 LaTeX:提升數學呈現的威力
Streamlit 的一個突出特點是其對 LaTeX 的支援,這使得您可以在網路應用程式中無縫地包含數學表示式和方程式。這對於需要展示複雜公式和數學符號的資料科學家和研究人員尤其有用。要在 Streamlit 中使用 LaTeX,您只需將 LaTeX 表示式放入 Streamlit 的文字元素中。Streamlit 將會優雅地渲染 LaTeX,提供清晰且專業的數學標記。例如,您可以顯示一個簡單的方程,如二次公式,或更複雜的表示式,包括積分、總和及分數等。這項功能增強了您的資料科學專案的呈現,使其不僅資訊豐富,也視覺上引人注目。
**與 Python 的無縫整合:** Streamlit 與 Python 進行了深入整合,讓您無需使用額外庫即可直接在 Streamlit 應用程式中使用 LaTeX。這提供了無縫的程式設計體驗,使您可以輕鬆地在您的應用程式中加入數學內容。
**動態數學視覺化:** Streamlit 提供了對 LaTeX 表示式的動態渲染,這表示您可以根據使用者輸入或資料變化來更新和顯示您的數學表示式。這個功能使您可以建立互動式資料視覺化,讓使用者可以探索和理解複雜的數學概念。
import streamlit as st st.latex(r''' a + ar + a r^2 + a r^3 + \cdots + a r^{n-1} = \sum_{k=0}^{n-1} ar^k = a \left(\frac{1-r^{n}}{1-r}\right) ''')
要使用 Streamlit 繪製線圖、面積圖和條形圖,請使用以下程式碼。顯示一個面積圖。這是一種對 st.altair_chart 的語法糖。主要的區別在於,此命令利用資料自身的列和索引來確定圖表的 Altair 規範。因此,在許多「只需繪製此項」的情境中,這樣更容易使用,但相對不那麼可自訂。如果 st.area_chart 無法正確猜測資料規範,請嘗試使用 st.altair_chart 指定您想要的圖表。
import streamlit as st import pandas as pd import numpy as np chart_data = pd.DataFrame(np.random.randn(20, 3), columns=["a", "b", "c"]) st.area_chart(chart_data)
顯示一個長條圖。這是對 st.altair_chart 的語法糖包裝。主要的不同在於,這個指令使用資料自身的列和索引來推斷圖表的 Altair 規範。因此,在許多「只需繪製此圖」的情境下,這樣使用更加簡便,但可自訂性較低。如果 st.bar_chart 未能正確猜測資料規範,請嘗試使用 st.altair_chart 指定您所希望的圖表。
import streamlit as st import pandas as pd import numpy as np chart_data = pd.DataFrame(np.random.randn(20, 3), columns=["a", "b", "c"]) st.bar_chart(chart_data)
顯示散點圖。這是一種在 st.altair_chart 周圍的語法糖。主要的區別在於,這個指令使用資料自身的列和索引來推斷圖表的 Altair 規範。因此,對於許多「只需繪製此圖」的情境而言,這樣使用更為簡便,但可自定義性較低。如果 st.scatter_chart 無法正確猜測資料規範,請嘗試使用 st.altair_chart 來指定您所需的圖表。
import streamlit as st import pandas as pd import numpy as np chart_data = pd.DataFrame(np.random.randn(20, 3), columns=["a", "b", "c"]) st.scatter_chart(chart_data)
顯示折線圖。這是一種對 st.altair_chart 的語法糖包裝。在這個命令中,主要的區別在於它使用資料自身的列和索引來推斷圖表的 Altair 規範。因此,在許多「僅需繪製此圖」的情況下,這種方法較為簡單,但可自定義性較低。如果 st.line_chart 沒有正確猜測資料規範,可以嘗試使用 st.altair_chart 指定您所需的圖表。
import streamlit as st import pandas as pd import numpy as np chart_data = pd.DataFrame(np.random.randn(20, 3), columns=["col1", "col2", "col3"]) st.line_chart( chart_data, x="col1", y=["col2", "col3"], color=["#FF0000", "#0000FF"] # Optional )
顯示互動式的 Plotly 圖表。Plotly 是一個用於 Python 的圖表庫。這個函式的引數與 Plotly 的 plot() 函式相似。要在 Streamlit 中顯示 Plotly 圖表,請在需要呼叫 Plotly 的 py.plot 或 py.iplot 的地方使用 st.plotly_chart。
import streamlit as st import numpy as np import plotly.figure_factory as ff # Add histogram data x1 = np.random.randn(200) - 2 x2 = np.random.randn(200) x3 = np.random.randn(200) + 2 # Group data together hist_data = [x1, x2, x3] group_labels = ['Group 1', 'Group 2', 'Group 3'] # Create distplot with custom bin_size fig = ff.create_distplot( hist_data, group_labels, bin_size=[.1, .25, .5]) # Plot! st.plotly_chart(fig, use_container_width=True)
import streamlit as st import plotly.express as px df = px.data.iris() fig = px.scatter( df, x="sepal_width", y="sepal_length", color="species", size="petal_length", hover_data=["petal_width"], ) event = st.plotly_chart(fig, key="iris", on_select="rerun") event.selection
Streamlit 使得在您的網頁應用中輕鬆加入 Markdown,讓您可以格式化文字並新增各種元素,例如標題、列表、連結等。Markdown 是一種輕量級的標記語言,廣泛用於網路上的文字格式化。利用 Streamlit,您可以運用 Markdown 來增強資料科學專案的呈現,使其更加可讀且視覺上更具吸引力。
import streamlit as st st.markdown("*Streamlit* is **really** ***cool***.") st.markdown(''' :red[Streamlit] :orange[can] :green[write] :blue[text] :violet[in] :gray[pretty] :rainbow[colors] and :blue-background[highlight] text.''') st.markdown("Here's a bouquet —\ :tulip::cherry_blossom::rose::hibiscus::sunflower::blossom:") multi = '''If you end a line with two spaces, a soft return is used for the next line. Two (or more) newline characters in a row will result in a hard return. ''' st.markdown(multi)
import streamlit as st md = st.text_area('Type in your markdown string (without outer quotes)', "Happy Streamlit-ing! :balloon:") st.code(f""" import streamlit as st st.markdown('''{md}''') """) st.markdown(md)
Streamlit:資料科學應用程式的強大工具
在這篇部落格文章中,我們探討了 Streamlit 的一些基本特徵,使其成為一個強大的資料科學應用工具。我們深入了解了 Streamlit 如何支援 Markdown 進行文字格式化、LaTeX 用於數學表示式,以及各種資料視覺化技術,以建立互動且引人入勝的網頁應用程式。這些基礎知識為快速高效地構建令人印象深刻的資料驅動應用提供了堅實的基礎。Streamlit 的功能遠不止於此。它的能力擴充套件到建立複雜的儀錶板、無縫整合機器學習模型、動態處理使用者輸入等多項內容。不論您是想開發一個簡單的資料探索工具,還是一個全面性的分析平台,Streamlit 都提供了實現您構思所需的工具。
**1. 串流式資料處理的即時洞察:** Streamlit 不僅擅長處理靜態資料集,也支援串流式資料處理,使應用程式能即時反映資料變動。透過整合第三方資料串流服務,開發人員可以建立動態儀錶板,展示資料的最新狀態,以提供更及時的洞察和分析。
**2. 機器學習模型的無縫整合:** Streamlit 為開發人員提供將機器學習模型無縫嵌入應用程式中的工具。透過簡潔明瞭的 API,模型可以輕鬆部署至應用之中,使使用者能夠透過直觀介面與模型互動。這種整合使得開發者能夠打造強大的預測及分類模型,大幅提升資料科學應用程式的功能性。
綜上所述,不論您希望打造的是哪種型別的應用程式,Streamlit 都具備讓您的創意得以實現的一切資源。
我鼓勵你繼續探索 Streamlit 的豐富檔案,並嘗試其多樣的功能,以發揮其全部潛力。祝你程式設計愉快!
參考來源
從零開始:輕鬆入門您的第一個Streamlit應用程式. 什麼是 ...
Streamlit是一個開放原始碼工具。特別是為了數據科學工作者和開發者準備的工具,使用Streamlit 可以幫助他們快速製作使用數據相關的網頁應用程式。
來源: MediumStreamlit入門(1). Streamlit是什麼? | by YT Chen
Streamlit 是特別設計給機器學習與資料科學的開源框架,. 不需要任何網頁的知識,. 只需要用python的語法就能輕鬆架構出dashboard與app!
來源: MediumStreamlit 是一個適合Python初學者的工具,特別是在數據科學領域。它 ...
... 數據科學領域。它簡化了將Python 腳本轉化為互動式網頁應用的過程,讓使用者無需網頁開發經驗即可快速展示數據分析結果。Streamlit 提供簡單直觀的API ...
來源: Threads【Take It Take Place】Streamlit系列教學第一部分- 開發Hello World應用 ...
Streamlit 是一個開源的Python庫,用於快速開發互動式應用程式。Streamlit讓您可以使用大量的內建元件和小工具來創建資料科學和機器學習應用程式,並在 ...
來源: Toolify.ai在Python 資料科學領域:🚀⚡新的函式庫⚡ VS 舊的 ...
簡介** 在本文中,我提供了主流Python 函式庫的替代方案。 儘管主流函式庫得到了更強大的活躍社群的支持,但這些替代方案為Python 領域增加了一些價值 ...
來源: CodeLove 愛寫扣論壇Streamlit 與Gradio:Python框架的深度比較
Streamlit是一個專為數據科學家和工程師設計的開源Python框架。它使用者可以輕鬆將數據分析腳本轉變為具有豐富交互性的網絡應用。其直觀的API和快速的渲染 ...
來源: Vocus搭上Streamlit特快車遊沐星光程式
--- Streamlit能讓人單純用Python程式快速生成資料科學相關的網頁APP。在此演講中,我會先介紹如何用Streamlit以及公開的天文資料,開發出能顯示互動式資料圖表的網頁APP。
來源: PyCon TW 2024🧑🏻💻👩🏻💻🎤 2024/5/7(二)《 AI Talk實作工作坊_好用的視覺化工具Streamlit ...
通過這2.5小時的密集訓練,學員將能夠獨立開發和部署互動式資料應用,為資料科學專案提供強大的支援。 ➀ (19:00~20:00) Streamlit 基礎.
來源: 台灣人工智慧協會
相關討論