
作者:劉早起
來源:早起Python
如何在線執(zhí)行 pandas 代碼感興趣,今天就簡單來說一下我探索這一功能的過程。
首先在設計這一功能時,需要先明確大致需求:
其中最重要的一點就是用戶可以在當前網(wǎng)站、當前單元格執(zhí)行代碼,其次盡可能的減少其他操作。
其實為了實現(xiàn)這個功能,我探索了大半個月,不斷修改方案,刪掉了幾個寫了很久但是不能完美實現(xiàn)的代碼,幾度放棄,最后還是磕磕碰碰的做出來,下面是我的一些經(jīng)驗,僅供參考。
首先最簡單的思路就是用自己的服務器,前端寫一個輸入框,然后將用戶提交的代碼到后臺,執(zhí)行后再返回前端,就像這樣
但是思索了一番還是放棄了,除了要防止惡意用戶執(zhí)行sudo rm - rf /*之類的代碼,為了滿足第二個需求就要給每個用戶分配一定的空間,這就很吃服務器的配置,例如前天最高100+用戶同時運行,我的 4c8g 服務器肯定是帶不動的。
并且如果采取這個的方案,理論上可以實現(xiàn),但除了升級服務器要錢,我也沒有開發(fā)類似產(chǎn)品的經(jīng)驗,時間成本不好預估,遂放棄。
之后又是一番面向 stackoverflow 編程,我了解到很多可以在線執(zhí)行代碼的網(wǎng)站,就像這樣
確實可以在線執(zhí)行一段代碼,但是除去我是否能做出來,如何控制權(quán)限等問題,這樣的網(wǎng)站主要是以執(zhí)行代碼為主,無法完成 pandas 教程的任務。
并且代碼不能預設置,只能進入頁面后手動輸入,本地數(shù)據(jù)也不好加載,而且執(zhí)行一次就要跳轉(zhuǎn)到一個新的頁面,十分繁瑣(寫一個爬蟲接口也是一個辦法,但是就太依賴對方網(wǎng)站),于是很快放棄了這條思路。
繼續(xù)一番搜索后,我發(fā)現(xiàn)了一個神器 —— Jupyterhub
如上圖架構(gòu)展示的一樣,使用Jupyterhub 可以給每個用戶分配一個獨立的Jupyter Notebook,并且無需考慮權(quán)限等問題,我也可以提前將代碼和數(shù)據(jù)進行預設。
但問題在于采取此方案無法滿足教程需求,因為全部內(nèi)容都需要放在 Jupyter Notebook中,整體上就是將 pandas300題做成了在線版,而我想要的是一個網(wǎng)站。
并且使用Jupyterhub不可避免的要進行一些 docker 或 k8s 操作,這也不是我熟悉的領(lǐng)域,雖熱在這條思路上走了一段時間,但還是放棄了。
之后又是一番檢索,但無非都是上面幾種方案,在我感覺要放棄做這個網(wǎng)站時,無意中發(fā)現(xiàn)一個項目JupyterBook
簡單來說,他可以將你的 Jupyter Notebook 轉(zhuǎn)換為 html 頁面(基于 sphinx),并且一個很重要的特點就是可以在線、交互式執(zhí)行代碼。
具體怎么實現(xiàn)的呢?首先需要將你的項目上傳到一個公共資源平臺binder,這個網(wǎng)站會為你的項目創(chuàng)建一個鏡像,這樣可以方便給不同用戶使用
簡單來說,可以理解為將你的 Jupyter Notebook 掛在這個網(wǎng)站,別人就能去在線執(zhí)行,但是很明顯,我們都需要跳轉(zhuǎn)到這個頁面去使用,而我希望在當前頁面執(zhí)行代碼。
這時就需要在使用另一個項目(Thebe)
它使用JupyterLab API,通過加載一段JS代碼,再指定一個執(zhí)行后端(上面提到的binder),就可以在當前頁面執(zhí)行代碼。
聽起來很復雜,但是實現(xiàn)起來很簡單,上面我們說到,JupyterBook 是基于 Sphinx制作頁面的,所以只需要提前在配置 Sphinx時加載 sphinx_thebe插件即可,
至此,開頭我需求中的1、2就完美實現(xiàn)了,還剩最后一個問題就是如何讓用戶更少的執(zhí)行代碼?
如果你體驗過我的網(wǎng)站,你會發(fā)現(xiàn)執(zhí)行一個 pandas 操作連 import pandas as pd和讀取數(shù)據(jù)的操作都不用!
其實這些代碼在啟動jupyter notebook時就預先加載了,只需要在對應單元格上加上 thebe-init的 tag 即可。
當然,使用 JupyterBook 還是有很多坑,消耗我最多的時間就是在修改樣式上,默認的樣式如下,可能英文狀態(tài)下表現(xiàn)還行,但是到中文并不是很適配
為了大家不僅用的爽,我對網(wǎng)站顏值的要求也很高,于是爆改了幾千行的 css 和 js 代碼,甚至組件的位置都調(diào)整到小數(shù)點后兩位才讓我滿意,磕磕碰碰一個多月終于將整個網(wǎng)站做出來
最后,本文僅是對在線執(zhí)行代碼做了一個快速、不完整的總結(jié)。由于篇幅限制,還有很多搭建、部署網(wǎng)站細節(jié)的內(nèi)容沒有涉及到,如果你覺得不錯,歡迎點贊、轉(zhuǎn)發(fā)。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(RNN)家族中,長短期記憶網(wǎng)絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數(shù)據(jù)查詢到趨勢預判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網(wǎng)絡(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調(diào)研數(shù)據(jù)中的深度應用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03