国产肉体XXXX裸体137大胆,国产成人久久精品流白浆,国产乱子伦视频在线观看,无码中文字幕免费一区二区三区 国产成人手机在线-午夜国产精品无套-swag国产精品-国产毛片久久国产

博客專欄

EEPW首頁 > 博客 > 放棄Jupyter Notebooks吧,教你如何用儀表板展示研究成果

放棄Jupyter Notebooks吧,教你如何用儀表板展示研究成果

發(fā)布人:數(shù)據(jù)派THU 時(shí)間:2022-09-26 來源:工程師 發(fā)布文章

作為一名Python 愛好者,我?guī)缀跤?Jupyter Notebooks (https://jupyter.org/)處理一切工作。Notebooks集成了markdown標(biāo)記語言、代碼和inline模式繪圖,使其成為探索性數(shù)據(jù)分析的絕佳工具。我使用這些Notebooks來開發(fā)和共享代碼、開發(fā)原型、探索程序庫、玩轉(zhuǎn)數(shù)據(jù)以及繪圖和可視化。Notebooks可以呈現(xiàn)為靜態(tài)html和pdf,因此也非常適合用來編寫報(bào)告、文檔和教程……特別是當(dāng)你想要同時(shí)共享數(shù)據(jù)和代碼的時(shí)候。


然而,作為一名研究人員,我發(fā)現(xiàn)代碼有時(shí)會(huì)妨礙我想要顯示的數(shù)據(jù)。那么問題來了,當(dāng)我們要與非技術(shù)受眾分享數(shù)據(jù)時(shí),有哪些選擇?有比Notebooks更好的選擇嗎?


Notebooks的槽點(diǎn)


在我們繼續(xù)往下之前,不妨退后一步,看看Jupyter Notebooks存在的一些問題。


不可否認(rèn),利用Jupyter notebooks來展示研究結(jié)果在過去的幾年中已蔚然成風(fēng)。這意味著Jupyter Notebooks 的問題也是眾所周知的。我必須要吐槽的是:


1. 非線性執(zhí)行模式。Notebooks通常包含難以名狀的隱藏狀態(tài)。這對(duì)初學(xué)者來說非常不友好。

2. Notebooks很難與非技術(shù)人員共享。他們需要知道如何設(shè)置 Python、安裝庫、管理環(huán)境和修改代碼。


Notebooks可以托管在諸如binder之類的地方,從而使代碼立即可復(fù)現(xiàn)。只有理解代碼以及如何運(yùn)行筆記本,才能復(fù)現(xiàn)。在這里,inline模式代碼可能會(huì)給自己埋坑。我看到很多notebooks在頂部說明了每個(gè)變量的作用以及如何運(yùn)行代碼。你需要了解代碼的工作原理才能使用notebooks。


儀表板


是時(shí)候請(qǐng)儀表板登場(chǎng)了。


儀表板是一個(gè)從數(shù)據(jù)科學(xué)世界引入的相對(duì)較新的概念,它利用了現(xiàn)代web的優(yōu)點(diǎn)。從本質(zhì)上講,儀表板是用于快速瀏覽某些數(shù)據(jù)的簡(jiǎn)單web應(yīng)用程序。就像一個(gè)用來呈現(xiàn)數(shù)據(jù)的迷你圖形界面。


在荷蘭eScience中心,我們喜歡使用儀表板來展示我們的數(shù)據(jù)

(https://blog.esciencecenter.nl/https-blog-esciencecenter-nl-spot-visual-scientific-data-analytics-made-easy-62e03a895bae)。


如果你是 Python用戶,你可以試試下面這些儀表板工具:


  • Dash(https://plotly.com/dash/,2017 年,每月 88.3 萬次下載)

  • Panel(https://panel.holoviz.org/, 2018 年,每月 38.7 萬次下載)

  • Streamlit(https://streamlit.io/, 2019 年,每月 93 萬次下載)

  • voila(https://voila.readthedocs.io/en/stable/, 2019 年,每月 5.6 萬次下載)


以上都是非常棒的選擇。如果你需要詳細(xì)地比較他們之間的優(yōu)缺點(diǎn),請(qǐng)查看博客文章(https://medium.datadriveninvestor.com/streamlit-vs-dash-vs-voil%C3%A0-vs-panel-battle-of-the-python-dashboarding-giants-177c40b9ea57)。


Streamlit


在這四個(gè)儀表板工具中,Streamlit最讓我印象深刻,因?yàn)樗?jiǎn)單易用。我有一個(gè)項(xiàng)目一直在用Streamlit開發(fā)出的簡(jiǎn)單的數(shù)據(jù)處理GUI。以下是我整理的早先的使用心得:


1. 使用一周后,我發(fā)現(xiàn)它非常容易上手。

2. 線性執(zhí)行模式使得對(duì)代碼的理解變得容易(稍后會(huì)詳細(xì)介紹)。

3. 無需了解任何web開發(fā),因?yàn)樵搸斓哪康闹痪褪情_箱即用(劇透警告:確實(shí)如此)。

4. API設(shè)計(jì)得非常好,易于管理,Python風(fēng)格明顯。你可以在一天內(nèi)掌握全部 API。有人會(huì)說 API 提供得選項(xiàng)很有限,但在我看來恰好,剛好適合我的大腦容量。它的文檔結(jié)構(gòu)也不錯(cuò),提供了清晰的解釋和示例。

5. Streamlit開發(fā)人員聲稱這是用Python構(gòu)建數(shù)據(jù)應(yīng)用程序的最快方法。這聽起來像是一種推銷,但它可能是真的。你可以在幾分鐘內(nèi)將任何Python腳本變成交互式儀表板。


從一個(gè)正常的繪圖過程......


讓我們來看一個(gè)例子。作為一名研究人員,我有很多Python腳本或notebooks,它們?cè)谧鋈缦率虑椋?/span>


1. 加載或生成數(shù)據(jù)

2. 數(shù)據(jù)處理

3. 繪圖


我會(huì)無休止地調(diào)整參數(shù)并重新運(yùn)行腳本以獲得正確的繪圖。這對(duì)我來說不是問題。但是,當(dāng)與不太精通軟件的同事共享腳本時(shí),這意味著我就要扮演技術(shù)支持的角色。想想就頭痛,需要幫忙設(shè)置 Python、管理環(huán)境、修復(fù)錯(cuò)誤、滿足功能需求等……


聽起來很耳熟?


下面的代碼片段生成一些數(shù)據(jù)(正態(tài)分布),對(duì)其進(jìn)行擬合,并從中創(chuàng)建一個(gè) matplotlib圖。它需要三個(gè)參數(shù),mu_in、std_in 和 size。































import numpy as npfrom scipy.stats import normimport matplotlib.pyplot as plt
mu_in = 5std_in = 5.0size = 100
def norm_dist(mu, std, size=100):"""Generate normal distribution."""return norm.rvs(mu, std, size=size)
data = norm_dist(mu_in, std_in, size=size)
# Fit the normal distributionmu, std = norm.fit(data)
# Make some plotsx = np.linspace(-40, 40, 100)y = norm.pdf(x, mu, std)
title = f"Fit results: {mu=:.2f},  {std=:.2f}"
fig, ax = plt.subplots()ax.hist(data, bins=50, density=True)ax.plot(x, y, 'k', linewidth=2)ax.set_title(title)
plt.show()


我酷斃了的Python腳本。


圖片圖片 正態(tài)分布圖


…再到酷炫的儀表板 


讓我們通過四個(gè)簡(jiǎn)單的步驟將其變成交互式儀表板:


1. import streamlist as st

2. 用st.title添加標(biāo)題

3. 用st.slider將輸入?yún)?shù)轉(zhuǎn)換為交互式滑塊

4. 用st.pyplot繪圖


注意,此時(shí)我們不必更改任何數(shù)據(jù)生成、擬合或繪圖相關(guān)的代碼!

























import numpy as npfrom scipy.stats import normimport matplotlib.pyplot as pltimport streamlit as st
st.title('Normal distribution')
mu_in = st.slider('Mean', value=5, min_value=-10, max_value=10)std_in = st.slider('Standard deviation', value=5.0, min_value=0.0, max_value=10.0)size = st.slider('Number of samples', value=100, max_value=500)
def norm_dist(mu, std, size=100):  """Generate normal distribution.""" return norm.rvs(mu, std, size=size)  data = norm_dist(mu_in, std_in, size=size)  # Fit the normal distributio mu, std = norm.fit(data)  # Make some plots  st.pyplot(fig)

現(xiàn)在變成儀表板了


運(yùn)行儀表板程序,輸入如下命令行:



streamlit run my_dashboard.py


這會(huì)開啟一個(gè)服務(wù)器端,然后利用瀏覽器就可以訪問儀表板了(就像用Jupyter Notebook一樣)

圖片

圖片

酷炫的儀表板


Streamlit是如何工作的的?


Streamlit 的工作方式非常有趣。每次移動(dòng)滑塊、選中一個(gè)框或按下一個(gè)按鈕時(shí),Streamlit 都會(huì)觸發(fā)腳本的重新運(yùn)行。每當(dāng)輸入值被更新,javascript 后端都會(huì)跟蹤這些值。


這意味著代碼本身是線性執(zhí)行的。在我看來,這種簡(jiǎn)單性是它與眾不同的地方。不需要任何回調(diào)或復(fù)雜的流控制。你的python腳本從上到下運(yùn)行。這使得理解代碼變得容易。python代碼只需經(jīng)過最少的修改,任何代碼腳本都可以變成儀表板。


有什么缺點(diǎn)嗎?當(dāng)然。因?yàn)閟treamlit在每次更新時(shí)都會(huì)重新運(yùn)行整個(gè)腳本,所以感覺有點(diǎn)慢,尤其是在更新大量繪圖時(shí),它也可能卡在長(zhǎng)時(shí)間運(yùn)行的函數(shù)上。Streamlit提供了一些選項(xiàng)來緩存中間結(jié)果,從而優(yōu)化性能。

(https://docs.streamlit.io/library/apireference/performance)


繪圖庫


上面的示例使用matplotlib進(jìn)行繪圖。Matplotlib一直是Python的首選繪圖庫。它已經(jīng)存在了近二十年,并且緊密集成在Python科學(xué)計(jì)算技術(shù)棧中。


如果你熟悉matplotlib,你就知道它適合繪制達(dá)到出版刊物質(zhì)量的圖,但與此同時(shí),交互式繪圖可能很麻煩。


Streamlit 支持以下庫:


  • matplotlib

  • altair

  • bokeh

  • plotly

  • seaborn

  • PyDeck

  • GraphViz


更加現(xiàn)代的繪圖庫,如 plotly(https://plotly.com/python/)、bokeh(https://bokeh.org) 和 altair(https://altair-viz.github.io)可以直接渲染到 javascript。這意味著它們天然是為Web而生的,并且內(nèi)置了交互性。這使它們更適合web應(yīng)用程序。如果你要制作儀表板,我建議你嘗試下這些可替代方案。


共享儀表板


好的,現(xiàn)在我們已經(jīng)制作了一個(gè)外觀精美的儀表板,以便任何人都可以上手把玩數(shù)據(jù)。那么如何部署呢?


Streamlit 使用主機(jī)/服務(wù)器模型,這意味著你可以在自己的服務(wù)器上運(yùn)行它。


更簡(jiǎn)單的辦法是使用streamlit云(https://streamlit.io/cloud)來托管你的儀表板(對(duì)學(xué)生和開源項(xiàng)目免費(fèi))。我發(fā)現(xiàn)這也很容易設(shè)置。我所要做的就是在 github上創(chuàng)建一個(gè)包含代碼和需求文檔的repository。


然后我使用Github SSO登錄到streamlit云,并啟動(dòng)了一個(gè)指向我的repo和代碼的新應(yīng)用程序。


點(diǎn)擊這里

(https://share.streamlit.io/stefsmeets/dashboard_blog/main)查看結(jié)果!  


尾聲


在這篇博文中,我介紹了streamlit ,并展示了如何利用它將python腳本轉(zhuǎn)換為儀表板,以及如何在線托管。在我看來,這是向非技術(shù)受眾展示研究成果的絕佳方式。線性執(zhí)行模式會(huì)讓調(diào)整現(xiàn)有腳本變得簡(jiǎn)單。代碼不會(huì)成為阻礙,結(jié)果看起來也很棒。


因此,下次當(dāng)你想在notebook中顯示一些數(shù)據(jù)時(shí),請(qǐng)考慮改用儀表板。


這篇博文中的所有代碼都可以從Github獲得(https://github.com/stefsmeets/dashboard_blog)。


原文標(biāo)題:

Forget about Jupyter Notebooks — showcase your research using Dashboards 

原文鏈接:

https://medium.com/escience-center/forget-about-jupyter-notebooks-showcase-your-research-using-dashboards-5d13451ba374



*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。

c++相關(guān)文章:c++教程


通信相關(guān)文章:通信原理


藍(lán)牙技術(shù)相關(guān)文章:藍(lán)牙技術(shù)原理


關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉