一份语言选择指南带你玩数据科学,选出你心中支持的语言

简介: 数据科学是一个热门的领域,本文介绍数据科学家目前使用的一些热门编程语言,主要是从通用性、性能等方面分析,想入门的或行业研究者可以参考并发表一下自己的观点哦。

首发地址:https://yq.aliyun.com/articles/193245

ef1442b57c5bbb99f0210d176241ca27996af3af

随着大数据时代的到来,网络每天会产生大量的数据,一些行业会对这些数据进行分析并协助企业不断地发展新业务、创建运营模式等,比如电子商务、推荐系统等。那么谁对这些大数据进行分析呢?对应的工作领域是数据科学Data Science),该领域需要结合先进的统计知识、定量分析能力和编程能力。涉及到编程,大家都会面临一个问题,有太多的编程语言可供选择,那么哪些编程语言适合数据科学领域呢?虽然没有正确答案,但想成为一名成功数据科学家将考虑以下几点

特异

当涉及到先进的数据科学时,你将不仅仅是老瓶装新酒了,需要学习掌握你选择的编程语言提供的特定领域的各种软件包和模块。

一般

顶尖数据科学家将具有全面良好的编程技巧以及处理大量数据的能力。科学数据的日常工作多是围绕原始数据进行一些处理或数据清洗。

效率

快节奏的商业数据科学世界里,一般要尽快完成这项工作同时,这也使得技术债务蔓延——只有明智的做法可以最小化

性能

在某些情况下,优化代码的性能显得至关重要,尤其是在处理大量的关键任务数据。编译语言通常比解释语言快得多;同样,静态类型语言比动态类型的故障要多得多显而易见,权衡这些会下降生产力。在某种程度上,这被看作是一个双刃剑(一般性-特异性,性能-效率)。每一种语言都会面临这个问题考虑到这些核心原则,让我们看一下数据科学中使用的一些较流行的编程语言。以下是结合自己的个人经验和研究,仅供参考

R

需要知道2cd2cfdea434c4379eab9d86c615172cd61ba856

R语言诞生于1980年左右的S语言的一个分支,目前该项目是R语言统计计算基金会支持

许可证

免费

赞成的理由

  • 开放源码软件包R语言有一个几乎涵盖所有的定量和统计应用程序的数据包,包括神经网络、非线性回归模型等;
  • 基础设施是非常全面的内置一些统计功能和方法处理矩阵代数效果好
  • 数据可视化的能力很强,比如ggplot2

反对的理由

  • 性能方面R语言不是一个快速的语言
  • 领域特殊性R语言对于统计和数据科学是很好的,不适合通用程序设计;
  • 孤僻,R语言有一些不同于其他编程语言的特点例如:索引1开始等;

裁决—— “为它的设计而精彩”

R语言是一个功能强大的语言,擅长各种统计和数据可视化应用并开放源代码。

Python

a26627f33f4b19736673936e1413b174e9d21c80

需要知道

它由Guido van Rossum1991年发明,已经成为一个非常流行的通用语言,并在数据科学界广泛使用的。目前主要版本是目前3.62.7

许可证

免费

赞成的理由

  • Python是一个受欢迎的主流通用程序设计语言它有广泛的目标模块和社区支持及一些 API
  • Python是一种易学的语言
  • 一些软件包如pandas、scikit-learn、tensorflow使得Python成为机器学习应用的不二选择;

反对的理由

  • 类型安全性:Python是动态类型语言,类型错误是预料的;
  • 对于具体的数据统计和分析的目的,有更快和更安全的通用语言替代Python

裁决——“优秀的全才”

Python语言对数据科学而言是一个很好的选择。很多数据科学过程围绕ETL过程(提取、转换和加载)这使得Python的通用性非常适合。还有一些库比如tensorflow使Python在机器学习领域表现优异

SQL

0f0018cd704b137188e3d93191b4b5ab645cc7ce

需要知道

SQL结构性查询查询语言)定义、管理和查询关系数据库1974以来发生了许多的改变,但核心原则保持不变。

许可证

不同—— 某些是免费的,其他是收费的!

赞成的理由

  • 查询、更新和操纵数据库非常高效;
  • 声明性语法使得SQL语言非常,而且没有什么歧义
  • SQL具有非常广的应用范围,使其成为一个非常熟悉的有用语言

反对理由

  • SQL的分析能力是相当有限的——除了汇总计数和平均数据等操作外,你的选择是有限的
  • 对于来自命令式背景的程序员,SQL的声明性语法会呈现出一个学习遗忘曲线
  • 实现SQL有许多不同工具比如PostgreSQLSQLite等,操作起来难免会“头疼”;

裁决——“长期且高效”

SQL是有用的作为一个数据处理语言不是作为一种先进的分析工具。然而,大多数据科学过程依赖于ETL,SQL的长寿和效率证明了它对于现代数据科学家来说是一种非常有用的语言。

Java

f1b76d30b8f34ee06ade858111d3809ca9fb0a1b

需要知道

Java是一个非常受欢迎的通用语言运行在Java虚拟机(JVM)上,目前甲骨文公司支持。

许可证

8版——免费!旧版本是收费的

赞成的理由

  • 无处不在许多现代的系统和应用程序是建立在一个java后端;
  • 强类型Java语言确保类型安全
  • Java是一种高性能、通用的汇编语言,这使得它适合于编写高效的ETL生产代码和计算密集型机器学习算法;

反对理由

  • 对于特定的分析和更专门的统计程序而言Java冗长使得它不太可能成为首
  • 相比于特定领域语言R语言,没有大量的可供Java高级统计方法库

裁决——“数据科学的有力竞争者”

如果将Java作为第一选择的数据科学语言而言,你会发现Java的性能和类型安全优势。然而,你没有考虑用于其他语言比如R或Python范围具体软件包。

Scala

158a07d0bcf5dbfedb5d1b2c93b246ee522c9806

需要知道

由Martin Odersky2004年开发和发布,Scala运行在JVM的一种语言它是一个多范式语言,支持面向对象和函数方法。集群计算框架Apache Spark是用Scala写的。

许可证

免费

赞成的理由

  • ScalaSpark结合相当于高性能集群计算,对于使用高容量数据集的研究者来说,Scala是一种理想的选择;
  • 多范式:Scala程序员可以两全其美,因为Scala提供面向对象和函数式编程范式
  • Scala编译成Java字节码并运行在JVM上,使得它成为一个非常强大的通用型语言;

反对理由

  • Scala的建立和运行需要依赖于一些特定的集成开发环境,比如Eclipse、IntelliJ;
  • 语法和类型系统描述复杂。这使得那些学过动态语言如Python学者来说较困难;

裁决——“适合于大数据”

当它涉及到使用集群计算处理大数据,那么Scala结合Spark是极好的解决方案然而,如果你的应用程序不处理数据,Scala只会增加复杂度。

Julia

9ca9d0402beb9a04a85c4aa03666b59b69f86064

需要知道

Julia发布于5年前,在数值计算领域留下了深刻的印象几个主要的组织早期采用它带动了它的发展

许可证

免费

赞成的理由

  • Julia是一个JIT(即时)编译语言,这让它提供了良好的性能它还提供了Python这样的简单、动态类型和脚本功能
  • Julia专门设计用于数值分析,也能够进行通用编程

可读性

反对理由

  • 不成熟,作为一个新的语言,Julia的用户者使用一些数据包时会不稳定,但核心语言本身稳定;
  • 有限的软件包,小的社区发展;

裁决——“明日之星”

Julia作为一种新兴的语言,它不Python和R语言那样成熟,如果你愿意耐心,可以关注在未来几年的发展。

MATLAB

a6611059934bf1c79cd0f34240439204311927b5

需要知道

MATLAB是一个学术界和工业界应用的数值计算语言由MathWorks公司于1984开发并投入市场

许可证

专有——定价取决于你的使用情况

赞成的理由

  • 数值计算而设计。MATLAB非常适合复杂的数学要求,如信号处理、傅里叶变换图像处理等;
  • 数据可视化MATLAB有一些强大的内置绘图功能
  • MATLAB经常作为工程数学与应用数学本科课程的一部分,因此,MATLAB在这些领域得到广泛应用

反对理由

  • 专利许可证根据使用情况(学术、个人或企业)可能要付昂贵的许可证,也有免费的替代品如Octave
  • MATLAB不是通用编程的一个选择;

裁决——“最好用的数学密集型应用程序”

MATLAB在工业界和学术界广泛应用于定量和数值计算领域,使它成为数据科学一个重要选择你的应用程序或日常的应用需要密集、高级的数学功能时,MATLAB是你的不二选择

其他语言

还有其他的主流语言,数据科学家对这些可能感兴趣,下面让我们快速的概述

C++

72636afad5cb653dc28dafd8e7d42f63ec5f2741

C++不是数据科学的共同选择,原因很简单,可能是一个生产力与效率的问题。

正如一个Quora用户提出

“如果你写的代码做一些是为了特定的分析可能只运行这么一次,你愿意花30分钟写一个程序,运行10秒,或10分钟写一个程序,运行1分钟吗?

这虽然有点道理,但是对于重要的生产级性能,C++是实现低级别优化的机器学习算法的极佳选择。

裁决——“不适合日常工作,但适合性能关键时的应用”

JavaScript

c014a22a43327146fc14dba0e9e8a8dcaa982d27

随着Node.js近年来的提升JavaScript已经成为一个越来越重要的服务器端语言。然而,它在数据科学和机器学习领域的使用却受到了限制,以下是其几个缺点

  • 起步得晚(Node.js只有8岁!)
  • 很少有一些相关的科学数据库和模块可用这意味着没有真正主流的兴趣或动力
  • 性能虽好,JavaScript也得到许多批评

Node的强项是在异步I/O,广泛使用编译JavaScript语言可以想象下这对数据科学和实时ETL处理结合是多么的方便,但关键问题是这是否会与已经存在的东西有所不同

裁决——“JavaScript可以被视为一个重要的数据科学语言还有许多工作要做

Perl

cb8f7b736fbdbda3b2225e103d63b960d8c0577c

Perl被称为“瑞士军刀的编程语言,由于作为一个通用脚本语言的通用性它与Python有很多相似之处。但还没有Python在数据科学领域那样流行

考虑它在生物信息学等定量领域中的应用,有点出人意料。当涉及到数据科学时,Perl有几个主要缺点:表现不是太优异、语法不友好,在开发数据科学专用库方面没有强的动力。在任何领域,动力都是关键。

裁决——“有用的通用脚本语言,但它没有为的数据科学的简历提供真正的优势

Ruby

3941c2dd8a0fca52808aa0c6f14b5e3edb5153c1

Ruby是一个通用的动态类型的解释型语言。然而,它没有像Python那样在数据科学上被广泛采用。

这似乎很奇怪,但这很有可能是由于Python在学术界的主导地位,以及正反馈效应,使用Python的人越多导致更多的模块和框架开发,同时会带来更多的人转向Python。虽然Sciruby项目带来的科学计算功能,如矩阵代数但随着时间的推移,Python仍将引领潮流

裁决——“对于数据科学而言,目前不是显而易见的选择,但不会伤害的简历

结论

通过以上内容,现在你有了一个关于考虑数据科学的语言的指南。关键是要一般性和特异性理解你的使用需求,以及个人针对性能和生产力而言谁优先的开发风格。

针对以上的内容,或许你有一个完全不同的建议如果是这样的话,请在下面留言 回复我期待听到你的回音

感谢你的阅读!

 

作者信息

Peter Glesson:数据科学、统计和编程方面的作家

个人主页:https://medium.freecodecamp.org/@petergleeson1

Linkedin:https://www.linkedin.com/in/peter-gleeson-874238140

本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

文章原标题《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,译者:海棠,审阅

文章为简译,更为详细的内容,请查看原文

翻译者: 海棠 

Wechat:269970760 

Email:duanzhch@tju.edu.cn

微信公众号:AI科技时讯

157f33dddfc596ede3681e0a2a0e7068dc288cc1

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
R数据科学|第十一章内容介绍
因子在 R 中用于处理分类变量。从历史上看,因子远比字符串更容易处理。因此,R 基础包中的很多函数都自动将字符串转换为因子。
152 0
R数据科学|第十一章内容介绍
R数据科学|第十章内容介绍(二)
本章通过学习字符串的处理,再结合正则表达式进行正确的模式匹配。
247 0
R数据科学|第十章内容介绍(二)
R数据科学|第十章内容介绍(一)
本章通过学习字符串的处理,再结合正则表达式进行正确的模式匹配。
105 0
|
SQL
R数据科学|第九章内容介绍
在实际应用中,我们常会涉及到多个数据表,必须综合使用它们才能找到关键信息。存在于多个表中的这种数据统称为关系数据。本章中的很多概念都和SQL中的相似,只是在dplyr中的表达形式略微不同。一般来说,dplyr 要比 SQL 更容易使用
116 0
R数据科学|第九章内容介绍
|
机器学习/深度学习 算法 数据挖掘
|
机器学习/深度学习 算法
一份数据科学“必备”的数学基础清单
一份数据科学必备的数学知识清单,给出了相应的学习资源,方便秋招者查漏补缺。
4631 0
|
机器学习/深度学习 算法 测试技术
想知道机器学习掌握的怎么样了吗?这有一份自测题
人类对于自动化和智能化的追求一直推动着技术的进步,而机器学习这类型的技术对各个领域都起到了巨大的作用。随着时间的推移,我们将看到机器学习无处不在,从移动个人助理到电子商务网站的推荐系统。即使作为一个外行,你也不能忽视机器学习对你生活的影响。
1188 0
|
SQL JavaScript Java
一份语言选择指南带你玩数据科学,选出你心中支持的语言
数据科学是一个热门的领域,本文介绍数据科学家目前使用的一些热门编程语言,主要是从通用性、性能等方面分析,想入门的或行业研究者可以参考并发表一下自己的观点哦。
4290 0