京公网安备 11010802034615号
经营许可证编号:京B2-20210330
作者:刘早起
来源:早起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
在休闲游戏的运营体系中,次日留存率是当之无愧的“生死线”——它不仅是衡量产品核心吸引力的首个关键指标,更直接决定了后续LT ...
2025-12-16在数字化转型浪潮中,“以用户为中心”已成为企业的核心经营理念,而用户画像则是企业洞察用户、精准决策的“核心工具”。然而, ...
2025-12-16在零售行业从“流量争夺”转向“价值深耕”的演进中,塔吉特百货(Target)以两场标志性实践树立了行业标杆——2000年后的孕妇精 ...
2025-12-15在统计学领域,二项分布与卡方检验是两个高频出现的概念,二者都常用于处理离散数据,因此常被初学者混淆。但本质上,二项分布是 ...
2025-12-15在CDA(Certified Data Analyst)数据分析师的工作链路中,“标签加工”是连接原始数据与业务应用的关键环节。企业积累的用户行 ...
2025-12-15在Python开发中,HTTP请求是与外部服务交互的核心场景——调用第三方API、对接微服务、爬取数据等都离不开它。虽然requests库已 ...
2025-12-12在数据驱动决策中,“数据波动大不大”是高频问题——零售店长关心日销售额是否稳定,工厂管理者关注产品尺寸偏差是否可控,基金 ...
2025-12-12在CDA(Certified Data Analyst)数据分析师的能力矩阵中,数据查询语言(SQL)是贯穿工作全流程的“核心工具”。无论是从数据库 ...
2025-12-12很多小伙伴都在问CDA考试的问题,以下是结合 2025 年最新政策与行业动态更新的 CDA 数据分析师认证考试 Q&A,覆盖考试内容、报考 ...
2025-12-11在Excel数据可视化中,柱形图因直观展示数据差异的优势被广泛使用,而背景色设置绝非简单的“换颜色”——合理的背景色能突出核 ...
2025-12-11在科研实验、商业分析或医学研究中,我们常需要判断“两组数据的差异是真实存在,还是偶然波动”——比如“新降压药的效果是否优 ...
2025-12-11在CDA(Certified Data Analyst)数据分析师的工作体系中,数据库就像“数据仓库的核心骨架”——所有业务数据的存储、组织与提 ...
2025-12-11在神经网络模型搭建中,“最后一层是否添加激活函数”是新手常困惑的关键问题——有人照搬中间层的ReLU激活,导致回归任务输出异 ...
2025-12-05在机器学习落地过程中,“模型准确率高但不可解释”“面对数据噪声就失效”是两大核心痛点——金融风控模型若无法解释决策依据, ...
2025-12-05在CDA(Certified Data Analyst)数据分析师的能力模型中,“指标计算”是基础技能,而“指标体系搭建”则是区分新手与资深分析 ...
2025-12-05在回归分析的结果解读中,R方(决定系数)是衡量模型拟合效果的核心指标——它代表因变量的变异中能被自变量解释的比例,取值通 ...
2025-12-04在城市规划、物流配送、文旅分析等场景中,经纬度热力图是解读空间数据的核心工具——它能将零散的GPS坐标(如外卖订单地址、景 ...
2025-12-04在CDA(Certified Data Analyst)数据分析师的指标体系中,“通用指标”与“场景指标”并非相互割裂的两个部分,而是支撑业务分 ...
2025-12-04每到“双十一”,电商平台的销售额会迎来爆发式增长;每逢冬季,北方的天然气消耗量会显著上升;每月的10号左右,工资发放会带动 ...
2025-12-03随着数字化转型的深入,企业面临的数据量呈指数级增长——电商的用户行为日志、物联网的传感器数据、社交平台的图文视频等,这些 ...
2025-12-03