数据分析常用Jupyter而不是直接使用Python脚本或Excel原因在哪?

CSDNDRAGON 2019-11-22

在数据分析的场景说一下notebook的好坏,并且和Matlab, Excel比较一下

1. 优点

(1) 基于过程

数据分析和传统的MVC软件开发的最大区别在于,数据分析存在一个data flow, 我们是在不断的做计算,并且画图。这里存在一个大致的“顺序”,比如

  1. 先对数据进行处理,去掉有问题的数据 (Data Wrangling)
  2. 从各个角度看一个这个数据各个维度的分布情况 (Data Exploration)
  3. 根据自己的想法、要求,做具体的分析,计算
  4. 对计算结果做进一部分的分析

非诚勿扰:正在学习python的小伙伴或者打算学习的,可以私信小编“01”领取资料!

这有点类似做应用题。而这是传统的IDE (e.g. PyCharm) 没有办法做到的。假如全部都写脚本+输出,那么你每张图可能都要保存下来,然后再单独点进去看,很麻烦。而Notebook做这个要更方便,结果直接产生在Cell下面

数据分析常用Jupyter而不是直接使用Python脚本或Excel原因在哪?

反言之,如果你不需要这种频繁的计算-画图的话,那么notebook可能还真没什么大不了.

深一点而言,数据分析有不同的paradigm (大致可分为前处理-建模/计算-后处理)。因此,需要一个相应的工具。这一点,notebook并不是独创,这种方式应该是来源于mathematica.

(2) Python

主要是两点

语言优势

比如,在matlab中,你怎么给函数设定默认值?

function f(arg1,arg2,arg3)
 if nargin < 3
 arg3 = 'some default'
 end
end

https://stackoverflow.com/questions/795823/how-do-i-set-default-values-for-functions-parameters-in-matlab

这实在是太.....了

Package

我做的时候,需要画风玫瑰图,类似下面这种

数据分析常用Jupyter而不是直接使用Python脚本或Excel原因在哪?

这个matlab并没有. 我当然也可以自己去定义、去画,但那样效率太低

在Python里,已经有人做好了这个包,我安装,然后直接用就行了

再比如,我的研究涉及到一个很专业的函数拟合,这个东西,只有R有相关的包可以调用

而Python可以调用R来做计算,但Matlab却做不到,这又省了很多事情

进一步而言,Python具有开源、分享自己工作的基本条件。我自己做的研究、做的模型,也可以做成包分享出去,给别人使用,而Matlab则要困难许多。

(3) Hackable

和第一点对应,Notebook的是计算+文档的混合体,而本身又是web-based,因此非常好hack, 比如我的notebook因为非常长,所以就加了个侧边栏目录

数据分析常用Jupyter而不是直接使用Python脚本或Excel原因在哪?

安装见:https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tree/master/src/jupyter_contrib_nbextensions/nbextensions/toc2

再比如,在分析电影数据的时候,我觉得用card来展示更方便一点,所以可以这样显示数据

数据分析常用Jupyter而不是直接使用Python脚本或Excel原因在哪?

再比如,这么长的文档,有时候用来做演示,那么可以再加个按钮,把code cell全部隐藏掉就好了

2. 缺点

(1) 计算语法过于复杂

标准的语法总是要np.array, np.sum, 非常的啰嗦,这一点matlab要好很多

(2) 功能的欠缺

比如像上面朋友说的,没有像matlab一样的variable explorer, 能够方便的查看数据

数据分析常用Jupyter而不是直接使用Python脚本或Excel原因在哪?

这一点极其不便。又比如基于一个dataframe (excel型的数据),为什么不能直接点击、排序筛选,非要写查询语句?

又比如,画的图不是可交互性的,

数据分析常用Jupyter而不是直接使用Python脚本或Excel原因在哪?


比如这里,我可能想知道上面某个点具体的值是多少,但是静态图做不到。

尽管目前有不少交互式的包,但是语法又极其复杂,并不像matplotlib那样容易使用。

再比如目前的图片,作为论文插图也不够好,matplotlib又不支持emf格式。因此图片插入word也是个很大的问题。

(3) Notebook不是IDE

主要问题在于,我在notebook中写的函数,没有办法快速跳转到其定义。而一般的IDE, CTRL+点击就行了。

3. 未来

(1) 大部分问题都是可以解决的

像上面说的很多欠缺的功能,都是可以解决、正在解决的,就好比我自己去策划推动了侧边栏目录一样。像variable explorer,已经有了初步的版本,但目前还是很难用就是了。

绝大部分欠缺的功能,都可以做,而且开发难度不高。实际上近几年大家有用notebook的话,就会感觉版本号跳得特别快(虽然始终不够用....)

(2) 框架

有人说,自己写notebook的话,很容易写得很乱,左一个import, 又一个import. 所以要慎用,维护性很差。

但实际上,是缺乏一个框架,把大家的best practice总结起来。

就拿我的notebook 来说, notebook是这样组织的。最上面的cell 雷打不动,一定是基本的设置

数据分析常用Jupyter而不是直接使用Python脚本或Excel原因在哪?

然后所有的Import 放到文件里面在import 进来

数据分析常用Jupyter而不是直接使用Python脚本或Excel原因在哪?

这样notebook界面上的代码就清爽很多,不会有各种import。当然,肯定也有比我的做法更好的方法,但问题就是,这些best practice需要分享出来。

又比如计算复用的函数,都可以抽象出去,只在Notebook里面尝试新的函数,和写运行脚本,这样维护性也更好一些

这些方面,都可以做得更简洁,有更好的practice,这个是需要一个框架来做的。

4. 总结

所以,为什么要用notebook呢?其实就是这几点

  • 适合数据分析的 处理-计算-分析 的过程,不需要再专门写报告
  • Python带来的丰富的第三方包支持,不需要自己再重复造轮子
  • 正在逐步丰富的功能,比如多个cell的剪切/粘贴,PPT放映, cell tag ...

结尾

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。

相关推荐