数据分析不必用python_数据分析为什么常用Jupyter而不是直接使用Python脚本或Excel?...

上面的同学说了很多,但是通篇都在说好的,我说一下我的体验好了

先说下我的背景

这里大家讨论的是Jupyter Notebook, 下面在数据分析的场景说一下notebook的好坏,并且和Matlab, Excel比较一下

1. 优点

(1) 基于过程

数据分析和传统的MVC软件开发的最大区别在于,数据分析存在一个data flow, 我们是在不断的做计算,并且画图。这里存在一个大致的“顺序”,比如先对数据进行处理,去掉有问题的数据 (Data Wrangling)

从各个角度看一个这个数据各个维度的分布情况 (Data Exploration)

根据自己的想法、要求,做具体的分析,计算

对计算结果做进一部分的分析

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

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

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

(2) Python

主要是两点

语言优势

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

function f(arg1,arg2,arg3)

if nargin < 3

arg3 = 'some default'

end

end

这实在是太SB了

Package

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

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

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

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

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

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

(3) Hackable

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

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

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

2. 缺点

(1) 计算语法过于复杂

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

(2) 功能的欠缺

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

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

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

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

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

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

(3) Notebook不是IDE

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

3. 未来

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

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

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

(2) 框架

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

但实际上,是缺乏一个框架(不好意思,我是Ruby on Rails过来的。。。。),把大家的best practice总结起来。

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

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

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

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

4. 总结

所以,为什么要用notebook呢?其实就是这几点适合数据分析的 处理-计算-分析 的过程,不需要再专门写报告

Python带来的丰富的第三方包支持,不需要自己再重复造轮子

正在逐步丰富的功能,比如多个cell的剪切/粘贴,PPT放映, cell tag ...

但这并不是说就是“神器”了,实际上就目前的阶段(2017-08)而言,我觉得还远远称不上 (连个variable explorer都没有你好意思吗.....)但是按照目前的发展速度,我觉得是可以成为一个更好的数据分析、科学计算工具的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值