为什么数据科学家们选择了Python语言?
本文由 伯乐在线 - HanSir 翻译,toolate 校稿
英文出处:Quora
【伯乐在线导读】:这个问题来自 Quora,题主还补充说,“似乎很多搞数据的程序员都挺擅长 Python 的,这是为什么呢?”下面是 Jeff Hammerbacher 的回复。(693 赞)
Python是一种解释型、动态语言,具有明确而高效的语法。Python具有良好的REPL(Read-Eval-Print Loop ,‘读取-求值-输出’循环),还可以通过dir()和文档字符串从REPL中开发新模块。这是程序员更偏向于Python而不是C、C++或Java的一个原因。
Python社区于90年代中期投入精力开发了Numeric,它是“Python的一个扩展,以使其像Matlab那样自然地支持数值分析”[1]。Numeric后来演变成为NumPy[2]。几年后,Matlab的绘图功能通过matplotlib库被移植到Python中[3]。科学计算的库围绕NumPy和matplotlib建立,并打包成SciPy包[4],这在商业上由Enthought支持[5]。Python在类Matlab的数组操作和绘图功能上的支持,是它比Perl和Ruby更受到青睐的主要原因。
如今,对数据科学家来说,Python最流行的替代品是R、Matlab/Octave和Mathematica/Sage。除了前面提到的把Matlab的特性移植到Python的工作外,近期的工作已经把一些R和Mathematica中流行的特性移植到了Python。
R语言中的数据框和相关操作(来自plyr和reshape包)已经由pandas库实现[6]。scikit-learn项目[7]呈现了许多机器学习算法的通用接口,类似于R中的caret包。
Mathematica/Sage中“notebook”的概念已经由IPython notebooks实现[8]。
以我个人的观点,Python仍然在一些重要领域有所欠缺。
1. 首先是Python在数组操作和公式设定上的语法相对更加繁琐。Matlab/Octave在数组操作上的语法仍更受青睐(例如,这是它被斯坦福大学机器学习课程所采用的原因),而R语言在公式设定上的语法相当不错。
2. 再者就是静态图形库ggplot2与交互式图形库D3的对应Python库。matplotlib库既不易安装,又难以使用,还不容易建立用于web的交互式图形。
3. 第三就是NumPy和pandas库在处理大数据集时的可扩展性。Continuum公司正致力于解决这个问题,但距离创造出一些连贯又可用的东西还有很长的路要走。
4. 第四是缺乏一个类似于LINQ项目的、用于数据操作的嵌入式、声明式语言。Pandas作为一个低层次的数据操作工具箱来说很有用,但是跟踪复杂操作的专用Pandas语法会令人沮丧。
5. 最后是对数据科学家来说缺乏一个像R Studio一样高品质的IDE。
参考资料:
[1] http://hugunin.net/story_of_jyth…
[2] http://numpy.scipy.org/
[3] http://matplotlib.sourceforge.net/
[4] http://www.scipy.org/
[5] http://www.enthought.com/
[6] http://pandas.pydata.org
[7] http://scikit-learn.org
[8] http://blog.fperez.org/2012/01/i…
[9] http://continuum.io/
写于2012年8月29日。
关于作者: HanSir
为什么数据科学家们选择了Python语言?的更多相关文章
- 关于Python你不得不知道的Python语言特点
首先什么是语言?什么是编程? 准确来说是:定义计算机程序的语言,用来向计算机发送指令 个人理解: 语言:是一种交流的工具或者方式.比如我们的汉语普通话.各地的方言.外语中的英语.俄语.日语等.我们 ...
- mooc-python语言语法week3-6
week3 1.类型的概念:程序编程不允许有歧义的数据类型存在,所以对数据进行了划分,python语言类型分为,数字类型.字符串类型.元组类型.列表类型.文件类型.字典类型. i:数字类型: pyth ...
- 一文总结数据科学家常用的Python库(下)
用于建模的Python库 我们已经到达了本文最受期待的部分 - 构建模型!这就是我们大多数人首先进入数据科学领域的原因,不是吗? 让我们通过这三个Python库探索模型构建. Scikit-learn ...
- 一文总结数据科学家常用的Python库(上)
概述 这篇文章中,我们挑选了24个用于数据科学的Python库. 这些库有着不同的数据科学功能,例如数据收集,数据清理,数据探索,建模等,接下来我们会分类介绍. 您觉得我们还应该包含哪些Python库 ...
- 总结数据科学家常用的Python库
概述 这篇文章中,我们挑选了24个用于数据科学的Python库. 这些库有着不同的数据科学功能,例如数据收集,数据清理,数据探索,建模等,接下来我们会分类介绍. 您觉得我们还应该包含哪些Python库 ...
- 基于python语言的经典排序法(冒泡法和选择排序法)
前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 ...
- Web 开发和数据科学家仍是 Python 开发的两大主力
由于 Python 2 即将退役,使用 Python 3 的开发者大约为 90%,Python 2 的使用量正在迅速减少.而去年仍有 1/4 的人使用 Python 2. Web 开发和数据科学家仍是 ...
- 人工智能为什么选择Python语言?
作为新手,在面对广泛应用于企业级应用开发的 Java.游戏客户端开发的 C++.嵌入式开发的 C.人工智能领域的 Python 等数百种编程语言时,你会如何选择自己的第一门编程语言? 作者 | JAC ...
- SparkR:数据科学家的新利器
摘要:R是数据科学家中最流行的编程语言和环境之一,在Spark中加入对R的支持是社区中较受关注的话题.作为增强Spark对数据科学家群体吸引力的最新举措,最近发布的Spark 1.4版本在现有的Sca ...
随机推荐
- CSS控制背景
一.设置背景颜色:background-color 十六进制 background-color:#ff0000; 英文名称 background-color:red; 三原色 background-c ...
- noi2015的回忆和教训
前几天偶然打开了bzoj的rank list,突然发现——我竟然掉出了第一版!!! 自从我5月还是6月刷进第一版之后,我曾经天真的以为大概半年之内我还能保留在第一版内吧. 结果仅仅短短的4个月,我就已 ...
- js如何判断一个对象是不是Array
typeof 操作符 对于Function, String, Number ,Undefined 等几种类型的对象来说,他完全可以胜任,但是为Array时 var arr=new Array(&quo ...
- UVa 537 Artificial Intelligence?
题目大意:输入一个字符串,根据物理公式P=U*I,已知其中两个量,求第三个量,结果保留两位小数. Artificial Intelligence? Physics teachers in hig ...
- 【转】Android Interface的使用
原文网址:http://www.3g-edu.org/Android_free/art115.htm Android应用程序采用Java语言编写,Java语法和C/C++有很大的相似性,但也有一些特别 ...
- 本地Git环境配置
在Git Bash下获取源码时,提示permission denied publickey. 原因是本地帐号配置不正确,解决办法 生成SSH文件 1,进入Git Bash 2, 输入下面文字 ssh ...
- mysql 插入汉字出现问号 解决方法
mysql中文显示乱码或者问号是因为选用的编码不对或者编码不一致造成的,最简单的方法就是修改mysql的配置文件my.cnf.在[mydqld]和[client]段加入 default-charact ...
- Android intent-filter 简单用法
对电话拨号盘的过滤,mainfest配置文件中Activity如下配置: <activity Android:name=".TestActivity" android:lab ...
- hdu 5510 Bazinga (kmp+dfs剪枝) 2015ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)
废话: 这道题很是花了我一番功夫.首先,我不会kmp算法,还专门学了一下这个算法.其次,即使会用kmp,但是如果暴力枚举的话,还是毫无疑问会爆掉.因此在dfs的基础上加上两次剪枝解决了这道题. 题意: ...
- WCF:百度百科
百科-WCF http://baike.baidu.com/view/1140438.htm Wcf Windows Communication Foundation(WCF)是由微软发展的一组数据通 ...