博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面对海量数据用Excel无从下手?试试Jupyter吧
阅读量:2107 次
发布时间:2019-04-29

本文共 4195 字,大约阅读时间需要 13 分钟。

全文共
4715字,预计学习时长
10分钟

最近,一篇很有见地的文章《Jupyter即新型Excel》(Jupyter is the new Excel)备受瞩目。很多专业人士在应对大量数据分析任务时首选Excel,但文章作者Semi Koen认为,对于许多“大数据”难题来说,Jupyter笔记本会更有效。

如果你精通Jupyter兼容语言,你就会知道她在说什么,并且也不会真的打算用Excel来处理大数据集。

本文旨在与那些不太熟悉代码的人分享Jupyter的功能,并探寻一些挑战的解决方案。

图片来源:Campaign Creators/Unsplash

从何下手?

比如说,你辛辛苦苦对数据进行分析并生成了一些图标,要通过什么和别人分享?

这主要取决于受众目标,以下是两种主要途径:

· 导出(例如,可以通过电子邮件发送单独的PDF或Excel电子表格)

· 托管(一些易阅读的笔记本版本,期间可能被简化,但交互性质没变)

很多途径都跟一个简单但令人崩溃的问题相关:难以隐藏代码单元格。管理团队肯定不愿意看见收到的文件里有用于生成表格和图表的Python代码。

隐藏代码

事实证明,要做到这一点非常困难,而且没有适用于所有场景的万能解决方法。

Jupyter的一个拓展件可隐藏所有输入数据(),能够自由切换Jupyter中的隐形及可见代码状态,但这对于大多数导出/静态共享方案无效。

StackOverflow post()包含一个建议的代码片段,可以粘贴到笔记本顶部,它可以进入nbviewer(稍后讨论的“静态托管”共享解决方案之一)并导出HTML,但导出选项不多……

讨论分享笔记本电脑的每一种潜在方式时,将再次讨论这个问题。

导出方案

首先,来看看那些看起来像是托管的Jupyter笔记本程序中取出东西的最佳途径,最后再回到可以附加到电子邮件中的简单文件。

另存为

在Jupyter笔记本中查看文件菜单,打开“另存为”,就可以查看现有的一些文件格式。

“HTML”选项是在独立文件中准确表示原始笔记本的最佳方法。其还可以通过上面提到的“StackOverflow”代码片段来维护代码单元格的隐藏,但不会涉及大多数微件。在任何情况下,HTML都不是管理人员用来接收电子邮件的格式,甚至可能被安全软件阻止。

听起来,PDF和它更像。但是这很难直接获得(需要先安装某种形式的LaTeX软件,这可能很麻烦),而且它不会隐藏你的代码单元。事实上,生成一个PDF最好的方法可能仅仅是使用浏览器自己的打印功能,要求它输出一个PDF,显示当前浏览器中的笔记本。这包含当时在浏览器中看到的所有内容(因此,如果代码单元格通过隐藏所有输入数据被隐藏,那么这也将反映在PDF中)。

用心爱的Excel表格制表软件

大多数其他可用的格式都极具技术性,并不真的适合此处试图实现的目标。于是笔者启动了nb2xls project——一个易于安装的额外导出途径,允许用户根据笔记本的输出单元格(标准情况下不包括输入代码单元格)获取Excel电子表格文件。

这样做的好处是表格仍然是电子表格中的表格——可以在数字上拖动鼠标,查看总数和平均值!还将显示图形输出,如图表。不需要担心页面大小,因为如果笔记本很长或很宽,有很多行和列要填。

 

nb2xls 截图

要安装,只需运行pip install nb2xls,这应该会在文件菜单中添加一个额外的“Download As”选项:“Excel Spreadsheet (.xlsx)”。

在编写时,它是一个实验性的包——代码仍需要一些工作来为复杂的表或标记提供最佳结果。

详情和范例传送门:

在命令行上进行转换

所有这些“另存为”选项实际上只是命令行实用程序nbconvert的包装器,使用默认选项调用转换过程。如果确实需要指定任何转换选项,则可以使用命令行等效项。

例如,隐藏所有输入数据扩展文档时,建议使用下面的命令来获得导出的HTML文件,并删除输入代码单元格:

jupyter nbconvert --template=nbextensions --to=html my_notebook.ipynb

自行保存

“另存为”选项提供了一些有用的基础设施,可以将笔记本的骨架导出到单独的文件中。但是值得注意的是,在已经处于熟悉的编码环境中,因此直接从代码单元格生成一些文件非常有意义。例如,如果有一个大型panda DataFrame,那么最好将其保存为CSV,以便收件人可以完整地加载。类似这样:df.to_csv('./data.csv')。在实践中,首先要将它导入到Excel中,这样就可以对列进行格式化,并在标题下面加上下划线等。

Jupyter必不可少

虽然上面的导出选项只允许以独立的文件格式获取笔记本的核心,但有时(尤其是当微件在笔记本中占据重要位置时),需要找到一种方法来保持现有的Jupyter格式。

如果需要找到与非开发人员分享的途径,以便达到以下目标:

· 让他们理解

· 易于获取

· 安全,只有组织内能看到敏感数据

· 防御,非开发人员无法破坏任何东西或数据

下文的信息将会揭露一些潜在的途径。

Jupyter自带的项目

Jupyter项目组织有一些辅助项目,如果需要经常共用笔记本电脑,那么可以考虑投资一些基础设施。

两个中心

JupyterHub()是在共享资源上集中创建Jupyter工作区的一种方法,因此至少其他用户不需要运行自己的Jupyter服务器。除非你有一个可以在内部网络上运行JupyterHub的小型组织,否则需要考虑如何为适当的用户添加身份验证。

JupyterHub的主页标识

BinderHub确实扩展了JupyterHub,允许用户基于特定的计算环境(Python包等)启动一个Jupyter工作区,该环境是在git存储库中定义的,同时还包含与项目相关的数据文件和笔记本。用户可以通过直接访问一个URL来启动工作区。这就为你的工作提供了一个更加正式和易于访问的展示窗口。要查看名为的BinderHub公共实例的示例,请查看GitHub上my nb2xls repo的Readme页面上的“Launch Binder”链接()。

在实践中,这两个项目都不适合现成的任务——管理团队不想改变在笔记本上的输入方式。而且,将工作存储在git repo或工作区中(对于非开发人员来说是有意义的)会加大管理开销。

nbviewer

nbviewer ()是一个更适合的轻量级服务,可以通过一个URL轻松地托管笔记本。可以把它看作上面讨论的HTML导出选项的托管web页面版本:Javascript可以工作,但是其背后没有活动内核,所以用户只能在最后一次运行笔记本时看到作为输出的工作结果。

与Binder一样,提供一个免费的nbviewer托管版本试用。可以在GitHub上提供指向笔记本的URL,但也可以使用Dropbox链接。例如,在Dropbox的ipynb文件上“复制Dropbox链接”,然后将URL粘贴到的框中。你可以与同事共享生成的查看器页面的URL,但当然要注意这并不安全。

nbviewer.jupyter.org 主页

与向数据的管理团队发送HTML文件相比,共享URL更容易让人感到自然,但实际上,你不会从nbviewer获得HTML导出无法实现的很多东西。因此,到目前为止,Jupyter计划的任何一个主要项目似乎都没有带来多大帮助。

事实正是如此!

Jupyter项目最近的一个开发可能正是大家正在寻找的:voilà()允许你托管一个带有活动内核的笔记本,而不需要任何移位输入。默认情况下,代码单元格是隐藏的且禁止前端的执行请求,所以用户即使尝试,也不能破坏任何东西!

voilà 标识

在正在讨论的情况下,这可能成为一种非常好的分享笔记本的方式,但是仍然需要大量的工作。在编写本文时,只能共享一个指向记事本应用程序的单用户链接,如果多个用户的独立操作混淆了记事本中的数据流,则多个用户可能会发生冲突。

现有将voilà与JupyterHub(如上所述)集成的计划,这将允许多用户访问你的voilà托管笔记本电脑。当然,每当同事选择查看你的笔记本电脑时,你仍然需要确保voilà服务器正在运行,因此这不是你通常会在本地机器上持续运行的内容。

目光放远

Kyso()是一种第三方服务,允许“将数据科学博客化”。其主页上列出了一些公共笔记本(以及文章、链接、数据集和图表),可以让你了解如何共享笔记本。在付费计划中,你可以将协作限制在团队内部。默认情况下,代码输入单元格是隐藏的!

其应该带有实时的Jupyter微件,尽管现在遇到了一些问题,因为JupyterLab并不完全稳定,而且许多Jupyter微件还没有适应JupyterLab。Kyso目前似乎固定在JupyterLab 0.35上。

另一项服务,Saturn Cloud()是一个完整的云托管环境,作为谷歌云或亚马逊云服务等服务的替代,内置“发布”功能。虽然你的同事可以很容易地推出你的笔记本,但完全私人的出版似乎是不可能的。

 

结论

事实证明,这比我们希望与非开发人员分享Jupyter笔记本实验结果要困难得多!我们想要的特性是确保代码被隐藏,结果易于访问,根据需要显示是交互式的,并且数据要保持安全。

虽然现在已经有了一些导出功能(超文本标记语言、个人数据文件、电子表格),但在共享复杂数据时,这些都带来了挑战或限制。考虑到更实质性的托管选项,要么需要实现自己的基础架构(例如,运行自己的nbviewer或voilà实例),要么将数据科学工作流程改造为新的第三方云托管服务。

因此,最佳解决方案将在很大程度上取决于共享的数据,以及需要多久提交一次类似的报告。值得注意的是,在整个组织中所做的各种演示中,都有一些模式。对于大数据分析的特别共享,仍然需要从仔细导出的CSv中汇编电子表格;但是如果这种情况经常发生,也许是时候投资一些可用的基础设施来解决这个问题了。

留言 点赞 关注

我们一起分享AI学习与发展的干货

欢迎关注全平台AI垂类自媒体 “读芯术”

(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)

转载地址:http://pyfef.baihongyu.com/

你可能感兴趣的文章
02. 交换机的基本配置和管理
查看>>
03. 交换机的Telnet远程登陆配置
查看>>
微信小程序-调用-腾讯视频-解决方案
查看>>
giuhub搭建及常用操作
查看>>
phpStudy安装yaf扩展
查看>>
密码 加密 加盐 常用操作记录
查看>>
TP 分页后,调用指定页。
查看>>
Oracle数据库中的(+)连接
查看>>
java-oracle中几十个实用的PL/SQL
查看>>
PLSQL常用方法汇总
查看>>
详细介绍Oracle sqlplus命令
查看>>
几个基本的 Sql Plus 命令 和 例子
查看>>
PLSQL单行函数和组函数详解
查看>>
Oracle PL/SQL语言初级教程之异常处理
查看>>
Oracle PL/SQL语言初级教程之游标
查看>>
Oracle PL/SQL语言初级教程之操作和控制语言
查看>>
Oracle PL/SQL语言初级教程之过程和函数
查看>>
Oracle PL/SQL语言初级教程之表和视图
查看>>
Oracle PL/SQL语言初级教程之完整性约束
查看>>
PL/SQL学习笔记
查看>>