作者:刘早起
来源:早起Python
如何在线执行 pandas 代码感兴趣,今天就简单来说一下我探索这一功能的过程。
首先在设计这一功能时,需要先明确大致需求:
其中最重要的一点就是用户可以在当前网站、当前单元格执行代码,其次尽可能的减少其他操作。
其实为了实现这个功能,我探索了大半个月,不断修改方案,删掉了几个写了很久但是不能完美实现的代码,几度放弃,最后还是磕磕碰碰的做出来,下面是我的一些经验,仅供参考。
首先最简单的思路就是用自己的服务器,前端写一个输入框,然后将用户提交的代码到后台,执行后再返回前端,就像这样
但是思索了一番还是放弃了,除了要防止恶意用户执行sudo rm - rf /*之类的代码,为了满足第二个需求就要给每个用户分配一定的空间,这就很吃服务器的配置,例如前天最高100+用户同时运行,我的 4c8g 服务器肯定是带不动的。
并且如果采取这个的方案,理论上可以实现,但除了升级服务器要钱,我也没有开发类似产品的经验,时间成本不好预估,遂放弃。
之后又是一番面向 stackoverflow 编程,我了解到很多可以在线执行代码的网站,就像这样
确实可以在线执行一段代码,但是除去我是否能做出来,如何控制权限等问题,这样的网站主要是以执行代码为主,无法完成 pandas 教程的任务。
并且代码不能预设置,只能进入页面后手动输入,本地数据也不好加载,而且执行一次就要跳转到一个新的页面,十分繁琐(写一个爬虫接口也是一个办法,但是就太依赖对方网站),于是很快放弃了这条思路。
继续一番搜索后,我发现了一个神器 —— Jupyterhub
如上图架构展示的一样,使用Jupyterhub 可以给每个用户分配一个独立的Jupyter Notebook,并且无需考虑权限等问题,我也可以提前将代码和数据进行预设。
但问题在于采取此方案无法满足教程需求,因为全部内容都需要放在 Jupyter Notebook中,整体上就是将 pandas300题做成了在线版,而我想要的是一个网站。
并且使用Jupyterhub不可避免的要进行一些 docker 或 k8s 操作,这也不是我熟悉的领域,虽热在这条思路上走了一段时间,但还是放弃了。
之后又是一番检索,但无非都是上面几种方案,在我感觉要放弃做这个网站时,无意中发现一个项目JupyterBook
简单来说,他可以将你的 Jupyter Notebook 转换为 html 页面(基于 sphinx),并且一个很重要的特点就是可以在线、交互式执行代码。
具体怎么实现的呢?首先需要将你的项目上传到一个公共资源平台binder,这个网站会为你的项目创建一个镜像,这样可以方便给不同用户使用
简单来说,可以理解为将你的 Jupyter Notebook 挂在这个网站,别人就能去在线执行,但是很明显,我们都需要跳转到这个页面去使用,而我希望在当前页面执行代码。
这时就需要在使用另一个项目(Thebe)
它使用JupyterLab API,通过加载一段JS代码,再指定一个执行后端(上面提到的binder),就可以在当前页面执行代码。
听起来很复杂,但是实现起来很简单,上面我们说到,JupyterBook 是基于 Sphinx制作页面的,所以只需要提前在配置 Sphinx时加载 sphinx_thebe插件即可,
至此,开头我需求中的1、2就完美实现了,还剩最后一个问题就是如何让用户更少的执行代码?
如果你体验过我的网站,你会发现执行一个 pandas 操作连 import pandas as pd和读取数据的操作都不用!
其实这些代码在启动jupyter notebook时就预先加载了,只需要在对应单元格上加上 thebe-init的 tag 即可。
当然,使用 JupyterBook 还是有很多坑,消耗我最多的时间就是在修改样式上,默认的样式如下,可能英文状态下表现还行,但是到中文并不是很适配
为了大家不仅用的爽,我对网站颜值的要求也很高,于是爆改了几千行的 css 和 js 代码,甚至组件的位置都调整到小数点后两位才让我满意,磕磕碰碰一个多月终于将整个网站做出来
最后,本文仅是对在线执行代码做了一个快速、不完整的总结。由于篇幅限制,还有很多搭建、部署网站细节的内容没有涉及到,如果你觉得不错,欢迎点赞、转发。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
持证人简介:贺渲雯 ,CDA 数据分析师一级持证人,互联网行业数据分析师 今天我将为大家带来一个关于用户私域用户质量数据分析 ...
2025-04-18一、CDA持证人介绍 在数字化浪潮席卷商业领域的当下,数据分析已成为企业发展的关键驱动力。为助力大家深入了解数据分析在电商行 ...
2025-04-17CDA持证人简介:居瑜 ,CDA一级持证人,国企财务经理,13年财务管理运营经验,在数据分析实践方面积累了丰富的行业经验。 一、 ...
2025-04-16持证人简介: CDA持证人刘凌峰,CDA L1持证人,微软认证讲师(MCT)金山办公最有价值专家(KVP),工信部高级项目管理师,拥有 ...
2025-04-15持证人简介:CDA持证人黄葛英,ICF国际教练联盟认证教练,前字节跳动销售主管,拥有丰富的行业经验。在实际生活中,我们可能会 ...
2025-04-14在 Python 编程学习与实践中,Anaconda 是一款极为重要的工具。它作为一个开源的 Python 发行版本,集成了众多常用的科学计算库 ...
2025-04-14随着大数据时代的深入发展,数据运营成为企业不可或缺的岗位之一。这个职位的核心是通过收集、整理和分析数据,帮助企业做出科 ...
2025-04-11持证人简介:CDA持证人黄葛英,ICF国际教练联盟认证教练,前字节跳动销售主管,拥有丰富的行业经验。 本次分享我将以教培行业为 ...
2025-04-11近日《2025中国城市长租市场发展蓝皮书》(下称《蓝皮书》)正式发布。《蓝皮书》指出,当前我国城市住房正经历从“增量扩张”向 ...
2025-04-10在数字化时代的浪潮中,数据已经成为企业决策和运营的核心。每一位客户,每一次交易,都承载着丰富的信息和价值。 如何在海量客 ...
2025-04-09数据是数字化的基础。随着工业4.0的推进,企业生产运作过程中的在线数据变得更加丰富;而互联网、新零售等C端应用的丰富多彩,产 ...
2025-04-094月7日,美国关税政策对全球金融市场的冲击仍在肆虐,周一亚市早盘,美股股指、原油期货、加密货币、贵金属等资产齐齐重挫,市场 ...
2025-04-08背景 3月26日,科技圈迎来一则重磅消息,苹果公司宣布向浙江大学捐赠 3000 万元人民币,用于支持编程教育。 这一举措并非偶然, ...
2025-04-07在当今数据驱动的时代,数据分析能力备受青睐,数据分析能力频繁出现在岗位需求的描述中,不分岗位的任职要求中,会特意标出“熟 ...
2025-04-03在当今数字化时代,数据分析师的重要性与日俱增。但许多人在踏上这条职业道路时,往往充满疑惑: 如何成为一名数据分析师?成为 ...
2025-04-02最近我发现一个绝招,用DeepSeek AI处理Excel数据简直太爽了!处理速度嘎嘎快! 平常一整天的表格处理工作,现在只要三步就能搞 ...
2025-04-01你是否被统计学复杂的理论和晦涩的公式劝退过?别担心,“山有木兮:统计学极简入门(Python)” 将为你一一化解这些难题。课程 ...
2025-03-31在电商、零售、甚至内容付费业务中,你真的了解你的客户吗? 有些客户下了一两次单就消失了,有些人每个月都回购,有些人曾经是 ...
2025-03-31在数字化浪潮中,数据驱动决策已成为企业发展的核心竞争力,数据分析人才的需求持续飙升。世界经济论坛发布的《未来就业报告》, ...
2025-03-28你有没有遇到过这样的情况?流量进来了,转化率却不高,辛辛苦苦拉来的用户,最后大部分都悄无声息地离开了,这时候漏斗分析就非 ...
2025-03-27