本文由 伯乐在线 - 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语言?的更多相关文章

  1. 关于Python你不得不知道的Python语言特点

    首先什么是语言?什么是编程? 准确来说是:定义计算机程序的语言,用来向计算机发送指令 个人理解:   语言:是一种交流的工具或者方式.比如我们的汉语普通话.各地的方言.外语中的英语.俄语.日语等.我们 ...

  2. mooc-python语言语法week3-6

    week3 1.类型的概念:程序编程不允许有歧义的数据类型存在,所以对数据进行了划分,python语言类型分为,数字类型.字符串类型.元组类型.列表类型.文件类型.字典类型. i:数字类型: pyth ...

  3. 一文总结数据科学家常用的Python库(下)

    用于建模的Python库 我们已经到达了本文最受期待的部分 - 构建模型!这就是我们大多数人首先进入数据科学领域的原因,不是吗? 让我们通过这三个Python库探索模型构建. Scikit-learn ...

  4. 一文总结数据科学家常用的Python库(上)

    概述 这篇文章中,我们挑选了24个用于数据科学的Python库. 这些库有着不同的数据科学功能,例如数据收集,数据清理,数据探索,建模等,接下来我们会分类介绍. 您觉得我们还应该包含哪些Python库 ...

  5. 总结数据科学家常用的Python库

    概述 这篇文章中,我们挑选了24个用于数据科学的Python库. 这些库有着不同的数据科学功能,例如数据收集,数据清理,数据探索,建模等,接下来我们会分类介绍. 您觉得我们还应该包含哪些Python库 ...

  6. 基于python语言的经典排序法(冒泡法和选择排序法)

    前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 ...

  7. Web 开发和数据科学家仍是 Python 开发的两大主力

    由于 Python 2 即将退役,使用 Python 3 的开发者大约为 90%,Python 2 的使用量正在迅速减少.而去年仍有 1/4 的人使用 Python 2. Web 开发和数据科学家仍是 ...

  8. 人工智能为什么选择Python语言?

    作为新手,在面对广泛应用于企业级应用开发的 Java.游戏客户端开发的 C++.嵌入式开发的 C.人工智能领域的 Python 等数百种编程语言时,你会如何选择自己的第一门编程语言? 作者 | JAC ...

  9. SparkR:数据科学家的新利器

    摘要:R是数据科学家中最流行的编程语言和环境之一,在Spark中加入对R的支持是社区中较受关注的话题.作为增强Spark对数据科学家群体吸引力的最新举措,最近发布的Spark 1.4版本在现有的Sca ...

随机推荐

  1. LBS由ip查经纬度

    LBS API: https://api.map.baidu.com/highacciploc/v1?qcip=223.104.5.201&qterm=pc&ak=NLwCqrDce4 ...

  2. C++ new、delete

    C++中向系统申请堆内存的方法为使用new.new[]操作符,new申请单个对象的内存,new[]申请对象数组的内存.对应的delete.delete[]操作符将new.new[]操作符申请到的内存还 ...

  3. poj 1159 (DP LCS)

    滚动数组 + LCS // File Name: 1159.cpp // Author: Missa_Chen // Created Time: 2013年07月08日 星期一 10时07分13秒 # ...

  4. HDU 3863 (博弈) No Gambling

    这是我见过的最简单的一道博弈了,其实不要被复杂的棋盘吓到了. 首先肯定会有而且仅有一个人胜,而且因为棋盘是对称的,所以先手相对于后手肯定更有优势,那么肯定是先手赢. 这是不是严格的推理,但是确实比较容 ...

  5. 51nod1175 区间中第K大的数

    裸的主席树. #include<cstdio> #include<cstring> #include<cctype> #include<algorithm&g ...

  6. BZOJ 3406 乳草的入侵

    BFS. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm&g ...

  7. 【英语】Bingo口语笔记(53) - 口语中不可望文生义的词语

  8. 【英语】Bingo口语笔记(59) - 穿着的表达

  9. 【django】django学得好迷茫啊 来个学习规划吧

    http://www.zhihu.com/question/26235428

  10. php 系统命令执行函数

    (转载)作者:海底苍鹰地址:http://blog.51yip.com/php/1064.html 1,exec函数 <?php $test = "ls /tmp/test" ...