专栏首页皮皮鲁的AI星球数据科学该学习哪门编程语言?Python,R还是Scala?

数据科学该学习哪门编程语言?Python,R还是Scala?

做数据科学,到底应该学习哪门编程语言呢?本文将从语言的特性、第三方库、公司使用情况来做一些分析。

三种语言第三方库分布 来源:ActiveWizards

Python

Python无疑是近几年来的编程语言界的明星。

Python的优势

  • 简单易用
  • 有丰富的第三方库,支持Web、科学计算和机器学习
  • 胶水特性,可以将各种不同的程序粘接在一起
  • 可以在生产环境中使用

在数据科学领域,Python有众多框架可供使用者调用:机器学习框架scikit-learn,TensorFlow,XGBoost;数据预处理模块pandas;科学计算模块NumPy以及可视化工具。这些框架的使用者众多,支持很好,网上的教程非常丰富,适合初学者入门。此外,Python对Web编程支持很好,两个常用的Web框架Django和Flask都很容易上手,可以用来将数据科学的研究结果放到Web界面上展示。

对于复杂的数据流,Python可以像胶水一样,将shell、Hive SQL等ETL代码粘在一起。

Python的缺点

  • 原生Python速度慢,不适合直接做在线服务

原生Python速度慢的问题一直被诟病,也正因为此,原生Python代码不适合直接部署在生产环境。注意,这里强调的是“原生”,很多第三方库为了解决速度慢的问题,底层均使用C/C++或Fortran实现,如TensorFlow,NumPy等,可以有效解决速度慢的问题。另外,TensorFlow还提供了TensorFlow Serving,可以将训练好的模型部署到生产环境,虽然执行速度仍然比C++慢一些,但可以加快编程迭代速度,因此被很多公司采用。

因为可以快速部署在生产环境,Python被各个公司所青睐。

R

与Python一样,R也是一款自由开源的编程语言,上手很简单,并且有众多研究开发人员为其开发第三方库,是一个研究人员经常使用的语言。很多统计学领域的研究人员喜欢使用R。

R的包非常丰富,有支持机器学习的线性和非线性模型库,可视化工具ggplot2等等。而且R的第三方库更加开放,很多人通过github与全世界的R语言使用者共享自己开发的包。开放的缺点是,一些个人开发的R包质量参差不齐,可能有一些小问题,而且不一定能得到及时的修复。

R一大问题也是速度慢,不适合大规模的数据处理,R的一些底层包为了解决这个问题,使用C或Fortran编写,能在一定程度上解决速度慢的问题。相比之下,R仍然不适合多机器的并行计算。

R经常与Python对标,与Python相比,R是一个学院派。因为无法处理大规模数据,所以很少有互联网公司把R部署在生产环境。因此很多掌握R语言的应届生会发现在找工作时,R没有太大优势。

Scala

Scala是大数据领域的新秀。Scala建立在Java虚拟机上,因此很多Java的第三方库都可以被Scala调用。要知道,Java可是编程语言界里的当仁不让的老大。Scala是一种“函数式”编程语言,这种函数式编程非常适合大数据处理,第一次接触函数式编程的朋友可能需要一段时间来适应这种编程思想。

Scala的优势

  • Scala更快
  • 比起Python和R,Scala的变量类型是确定的,即静态类型
  • 支持高并发,执行效率更高,适合计算密集型算法
  • 主流大数据计算引擎均基于Scala,如Spark、Flink等

GB级以上数据量的公司都在使用Scala在Spark或者Flink上进行数据预处理,特征工程和数据分析,可能一些小公司不需要Scala,但是大公司都会要求Scala技能!

小结

我认为,Scala用来做大数据,Python用来做机器学习。每种语言都有其优势和缺点,编程语言的选择通常与所要解决的问题、数据量大小、公司的技术栈等多种因素影响,而且很多任务可能需要多种语言一起完成。比如,在数据量较大的推荐系统中,需要先使用Scala做数据分析和特征工程,生成中间数据,再使用TensorFlow训练模型,并使用TensorFlow Serving部署上线。

欢迎各位朋友在评论区分享你自己关于数据科学编程语言的经验和想法。

本文分享自微信公众号 - 皮皮鲁的AI星球(ai-xingqiu),作者:皮皮鲁AI

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Flink零基础实战教程:股票价格数据流处理

    之前的《万字长文深度解析WordCount程序》使用WordCount展示了Flink程序的基本结构,本文将以股票价格案例来演示如何使用Flink的DataSt...

    PP鲁
  • Python | 加一行注释,让你的程序提速10+倍!numba十分钟上手指南

    之前的文章《源代码如何被计算机执行》已经提到计算机只能执行二进制的机器码,C、C++等编译型语言依靠编译器将源代码转化为可执行文件后才能运行,Python、Ja...

    PP鲁
  • Java/Scala 泛型快速入门教程

    泛型(Generics)是强类型编程语言中经常使用的一种技术。很多框架的代码中都会大量使用到泛型,比如在Java中我们经常看到的:

    PP鲁
  • 人物 | 万维网之父Tim Berners-Lee获图灵奖:奖金100万美元

    选自ACM、MIT News 机器之心编译 参与:黄小天、吴攀、李亚洲 ? 今年的图灵奖得主 Tim Berners-Lee,他发明了万维网(World Wid...

    机器之心
  • 编程技术哪家强,百度指数帮你忙

    随着互联网大潮的到来,受到高薪吸引,仿佛各个专业的学生都在学习编程,小指本科期间众多学doule E、通信工程、物理与光电工程等专业的小伙伴纷纷在研究生期间转学...

    企鹅号小编
  • 走进腾讯数据中心

    导语:互联网企业是数据中心建设和应用的大户,所以他们在数据中心的探索上一定程度代表了这个产业的发展方向。通过此次走访腾讯天津数据中心可以看出,以微模块数据中心(...

    腾讯数据中心
  • 武哥自学Python笔记(一)

    最近Python被各大培训机构炒的火热,好像离开Python这个世界就不能运转一般,恰恰这个时候浙江省信息技术课程改革方案出台,Python确定进入浙江省信息技...

    企鹅号小编
  • 见微知著:腾讯数据中心开放活动随想

    9月初的早晨已经有点凉,一行人在北京CBD集合后,乘车赶往位于天津滨海新区的腾讯数据中心。虽因起个大早而颇为困倦,却不影响与腾讯数据中心架构师李典林聊得热火朝天...

    腾讯数据中心
  • 边缘数据中心需求和核心技术分析

    边缘计算是指将IT资源(计算、存储等)从传统的云数据中心向用户侧迁移,拉近用户和IT资源的物理距离,实现更低的数据交互时延、节省网络流量,从而为用户提供低延时、...

    数据猿
  • 探寻腾讯云基石,走进腾讯上海青浦数据中心

    互联网企业是数据中心建设和应用的大户,现在越来越多的企业选择了第三方数据中心,也成为了产业的发展趋势,在腾讯云的引领下,也正在掀起互联网+云服务的变革。而数据中...

    腾讯数据中心

扫码关注云+社区

领取腾讯云代金券