首頁>技術>

如果有人告訴您可以使用150-200行程式碼建立互動式Web應用程式,該怎麼辦? 有趣的權利。 Streamlit為您提供了使用簡單的python指令碼和一些streamlit呼叫來建立漂亮的Web應用程式的相同機會。

Streamlit是一個開放原始碼框架,用於以最快的方式建立資料科學和機器學習應用程式以進行資料探索。 我最喜歡streamlit的地方是它為您提供了實時編碼體驗。 您可以啟動流式應用程式,並且每次儲存時,您都會看到程式碼同時反映在瀏覽器中。 整齊吧!

在這篇文章中,我們將為印度的Covid-19 Impact Analysis構建一個Streamlit Web應用程式。 我已經建立了完整的網站,您可以在這裡瀏覽它-www.corona-updates.in。 我們不會深入研究Pandas,但是本教程將更側重於Streamlit。 我們將研究一些Pandas庫函式,但將深入探討Streamlit。 因此,讓我們開始吧!

要求:

· Streamlit

· Pandas

· plotly.express

使用pip安裝streamlit:

pip install streamlit

安裝完成後,您可以通過執行示例應用程式對其進行測試。

streamlit hello

您可以使用以下命令執行名為app.py的流式Web應用程式:

streamlit run app.py

精通Streamlit之後,現在就建立我們的網路應用。 建立一個python檔案app.py,然後匯入您需要建立的庫和python指令碼以及streamlit。

1.匯入資料庫

我們正在使用以下驚人的API匯入資料庫,以了解Covid-19印度的影響:https://api.covid19india.org。

在這裡,在load_data()方法中,我們正在使用pandas庫讀取.csv檔案,並且通過快取資料來提高程式碼效率。 但是隨著Covid-19的資料不斷變化,我們每5分鐘或最多20個條目清除一次快取。 如果您有一個不經常更改資料的用例,則只需使用@ st.cache(persist = True)

2.建立標題,文字內容和側邊選單

Streamlit支援markdown,因此在我們的網路應用中使用不同的字型大小非常容易。 它還通過傳遞引數來支援HTML:unsafe_allow_html =對st.markdown()呼叫正確,因此,我們可以按需要的方式設定文字樣式。

由於我們使用HTML將自定義顏色設為藍色,因此說明顯示為藍色。 我們也可以使用標頭和子標頭,就像我們將st.title()用於不同的標題一樣。 或者我們可以為此使用markdown。

st.sidebar.checkbox("Show Analysis by State", True, key=1)select = st.sidebar.selectbox('Select a State',data['State'])#get the state selected in the selectboxstate_data = data[data['State'] == select]select_status = st.sidebar.radio("Covid-19 patient's status", ('Confirmed','Active', 'Recovered', 'Deceased'))

· 複選框-複選框中的第一個引數定義複選框的標題,第二個引數定義True或False,即預設情況下是否選中它,第三個引數定義複選框的唯一鍵。

· 選擇框—此選擇框包含所有印第安州。 第一個引數是選擇框的標題,第二個引數定義要在選擇框中填充的值的列表。 在這裡,第二個引數是我們之前載入的.csv檔案中的列名"州"。 您可以自己開啟和瀏覽表格。 在下一行中,我們僅從選擇框中獲取state_data中針對所選狀態的資料條目。 我們也可以在此處傳遞關鍵引數。

· 單選按鈕—僅供您參考,我們目前尚未真正在Web應用程式中使用它。 與往常一樣,第一個引數是廣播組的標題,第二個引數接受選項的元組。 我們也可以在此處傳遞關鍵引數。

def get_total_dataframe(dataset): total_dataframe = pd.DataFrame({ 'Status':['Confirmed', 'Active', 'Recovered', 'Deaths'], 'Number of cases':(dataset.iloc[0]['Confirmed'], dataset.iloc[0]['Active'], dataset.iloc[0]['Recovered'], dataset.iloc[0]['Deaths'])}) return total_dataframestate_total = get_total_dataframe(state_data)if st.sidebar.checkbox("Show Analysis by State", True, key=2): st.markdown("## **State level analysis**") st.markdown("### Overall Confirmed, Active, Recovered and " + "Deceased cases in %s yet" % (select)) if not st.checkbox('Hide Graph', False, key=1): state_total_graph = px.bar( state_total, x='Status', y='Number of cases', labels={'Number of cases':'Number of cases in %s' % (select)}, color='Status') st.plotly_chart(state_total_graph)

方法get_total_dataframe()用於獲取資料框,以繪製選定狀態的圖。 dataset.iloc [0] [Confirmed]將返回" Confirmed"列的第一項,並且由於我們僅傳遞所選狀態的資料,因此在" Confirmed"," Recovered"," Active"和" Deceased"列中將只有一個條目。 (檢出.csv檔案)

未選中"按狀態顯示分析"複選框,我們不會在主螢幕上看到"狀態級別分析"部分。 同樣,如果選中了"隱藏圖形"複選框,我們將不會看到圖形。

要繪製圖形,我們將使用plotly.express庫的bar方法。 第一個引數是我們要繪製的資料框,第二個引數是x軸的列,第三個引數是y軸的列,如果要更改列名,則labels引數是可選的 對於圖形和顏色引數,此處是根據資料框中的"狀態"列對圖形進行顏色編碼。

最後,為了顯示該圖在我們的Web應用程式中,我們使用st.plotly_chart()方法。 我們也可以使用st.write()來顯示圖形。

5.顯示資料框或表

· st.dataframe():第一張圖片是st.dataframe()的結果,用於第二張圖片中的同一資料集。 您還可以使用內部呼叫st.datframe()的st.write()。

· st.table():我們使用st.table()獲得了第二張圖片中的表格。 這顯示了資料框中的所有資料,而沒有任何滾動。

def get_table(): datatable = data[['State', 'Confirmed', 'Active', 'Recovered', 'Deaths']].sort_values(by=['Confirmed'], ascending=False) datatable = datatable[datatable['State'] != 'State Unassigned'] return datatabledatatable = get_table()st.markdown("### Covid-19 cases in India")st.markdown("The following table gives you a real-time analysis of the confirmed, active, recovered and deceased cases of Covid-19 pertaining to each state in India.")st.dataframe(datatable) # will display the dataframest.table(datatable)# will display the table

在get_table()中,我們通過從選擇框獲得的狀態的最高"已確認"情況獲得排序後的資料框。 我們還會從資料集中刪除狀態為"未分配狀態"的行。

而已! 是的,就是這麼簡單。 :)

您已經準備建立自己的Web應用程式並嘗試使用Streamlit。 這篇文章是關於如何使用簡單的Python指令碼建立Streamlit應用程式的,我希望您喜歡它。 我建立了另一本有關如何使用AWS EC2部署此Web應用程式的詳細教程。 請檢查一下,讓我知道您的意見。

我已經為印度的Covid-19 Impact建立了完整的Streamlit Web應用程式,並使用AWS EC2進行了部署。 您可以在這裡檢視它-www.corona-updates.in。 請在評論部分提供您的寶貴反饋。 謝謝 :)

(本文翻譯自Nishtha Goswami的文章《Using Streamlit to create interactive WebApps from simple Python scripts》,參考:https://medium.com/swlh/using-streamlit-to-create-interactive-webapps-from-simple-python-scripts-f78b08e486e7)

最新評論
  • 1 #

    如果偷懶機翻,拜託人工處理一下。“我們不研究熊貓”,你也放出來

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 自認為精通React,這些JavaScript概念你掌握了沒?