学数据分析/挖掘应该先学Python,还是R语言?

 

导读:学数据分析/挖掘应该先学哪门语言?大家在选择统计工具时,大多会在R语言、SPSS和SAS三者之间纠结。那为什么一般更爱选R语言呢?本文会给你答案。

作者:木羊同学

来源:华章计算机(ID:hzbook_jsj)

学数据分析/挖掘应该先学Python,还是R语言?_第1张图片

今天聊R语言。R语言的知名度很玄学,介乎于热门首选和无人知晓之间。你对R语言的印象,完全取决于你是谁,你问的是谁以及什么时候问。如果早个两三年,你问“学数据分析/挖掘应该先学哪门语言”,甚至问“学机器学习应该先学哪门语言”,至少有50%的概率会得到“R语言”的回答,而另外50%的概率,我以为你会猜是“Python”,其实更可能是“R语言现在是主流,不过现在Python的发展势头很强劲,通用性更好,建议学Python”。

不过,自从Python让深度学习奶了一口,这几年一飞冲天,在TIOBE排行榜把世界上最好的语言和C++都干翻了,你再问同样的问题,毫无疑问就是满屏幕地怒刷Python。但这不是唯一的答案,即使在Python优势很大的今天,你去问统计学家,回答可能是“工业界偏好Python,但搞研究还是喜欢用R”。

为什么,难道R有什么独特优势?

这就要从R语言究竟是什么说起。总的来说,R语言是一门专业的小众语言。别一看到小众,就觉得是三五个人躲到哪个荒岛上的那种自娱自乐,这里是“专业的小众”,是指一个职业化的专业群体,对,正是上面提到的统计学家。R语言最开始是统计学发明的,给统计学家使用的编程语言。

多说一点统计学。大家对于这个专业的看法这几年一直在变化。十年前,感觉统计学很远,对我这样的程序员来说,统计学就是拿着Excel划拉两下。哪怕后来到了“数据挖掘”“数据淘金”“大数据XX”之类的新词一波接着一波飞的年代,大多数程序员也只是关心底层,说的最多的还是Hadoop和Spark。但再后来一点,机器学习大热,热到什么程度呢,学计算机不学机器学习,四舍五入约等于没有学习。因此,R语言也随之变得大众了一点,这一点可以从TIOBE排行榜看出来,以前R语言都是20名开外,现在基本能稳定前十了,把苹果家的现任当家花旦Swift都甩在了身后。

等一下,感觉怎么像弯腰捡了下橡皮,就从此跟不上剧情了?这不奇怪,因为里面还有一段隐藏剧情。机器学习大家应该都很清楚,但统计学和机器学习的私生关系就不知道是否也一样清楚了。我写过一本机器学习书,叫《机器学习算法的数学解析与Python实现》,读过这本书应该知道,虽然光靠名字怎么也看不出来,但机器学习确实是统计学血缘意义上的亲儿子。我在书里提到一个问题,机器学习的教材一般有两种写法,一种偏数学理论,一种偏编程应用,导致学起来总会有一点撕裂的感觉。后面不展开了,这里要说的是,R语言在统计学界非常热门,而早期出版偏编程应用的机器学习教材,包括经典的那几本,很多都是统计出身的学者写的,所以翻开一看你会发现,选择使用的编程语言就是R语言,究其原因,正是因为R语言是统计学界的母语

学数据分析/挖掘应该先学Python,还是R语言?_第2张图片

当然了,统计学可不止R语言这一门语言,热门的还有SASSPSS。所以,大家在选择统计工具时,大多会在R语言、SPSS和SAS三者之间纠结。那为什么一般更爱选R语言呢,因为R语言有自己独特的两大优势。

第一,专业统计这个专业很有意思,专业性很强,但同时用途又很广。这就很容易让

人产生误会,隔壁阿猫阿狗整天都说在统计这个统计那个,感觉统计没什么难的。实际上,别看很多软件都自称统计软件,但实际上的差别,可能比海鲜大餐和海鲜大餐口味的泡面还要大。前面说到SPSS,对于非统计专业的人来说,SPSS已经很专业了,但其实SPSS之所以受欢迎,主要还是因为它比较简单,更像是一款办公软件,而非编程语言。所以,一般只对新人推荐用SPSS,真要往深了做专业的事,还得用R语言。

第二,开源免费。玩编程的同学可能感觉这简直是理所当然,但玩统计的感觉应该就大不一样。统计是专业性很强的行业,自然有很多非常专业的统计软件,但这些软件大多有一个共同特点,那就是都是要收钱,而且是要收很多很多很多的钱,开源免费可以说是异端。前面这个SAS就是特别典型的统计软件,强大专业,金融界都爱用它,但这个软件是既不开源又不免费,不但不免费,还轻轻松松就要花个上百万,差不多也只有金融界能用得起它,搞学术研究的穷孩子们自然更偏爱R语言,大概因为这个,R语言无论在TIOBE还是KDnuggets,都把SAS甩了一大截。

另外,有人认为R语言的开源也是一大优势,因为有活跃的开源社区作为强大驱动力,所以R语言的更新升级相比要快,尤其适合尝新。这一点我反倒觉得见仁见智,搞创新研究当然都喜欢新方法,但另一些行业,譬如说和钱打交道的行业,对于统计方法更看重的可能不是新,而是稳,需要经过实践反复检验成熟才敢用。这也是金融界喜欢选择SAS的主要原因。

学数据分析/挖掘应该先学Python,还是R语言?_第3张图片

最后,我们聊一下数据分析,也和Python比一比。Python有很多优点,R语言能做的统计分析和可视化,Python也能做,甚至很多人更推荐用Python做。我自己的日常工作主要就是用Python,觉得Python简直无所不能,常常还能带来惊喜。所以知道R语言以后,我最想了解的问题是,什么情况下应该选择R语言而不是Python呢?

答案还是上面的第一点,专业。数据分析大量使用统计工具,所以,你所使用的统计工具能力有限制,那你数据分析能够达到的水平也会受到限制。我们选择Python,而不是Java或者C++等其他主流的编程语言做数据分析,主要就是因为Python在数据分析方面的支持库能力强大。不过,这个强大也是相对而言的,编程语言也有个生态系统的概念,而R语言在统计方面的生态系统显然要比Python成熟很多,大家最直观的感受,应该是用R语言做可视化要比Python简单。毕竟这么多年,统计方面的课程都是用R语言教的,统计方面的论文都是用R语言做的,在这个方面,从工具资源到人的经验,R语言都要比Python丰富得多。就算Python现在又大红大紫,但对于统计知识丰富、但编程知识匮乏的专业人士来说,转学Python还是容易造成各种不适。

这个话题很有意思,我多说一点。我是亲眼见过统计圈子为“要不要转学Python编程语言做统计分析”交换了意见的,而且是充分地交换了意见。开始我不太理解,要我说干脆两个都学不就行了嘛。后来我才想明白,我是学计算机出身的,关注点在于“编程语言”,而对于学统计出身的同学,关注点则是“统计分析”,所以说的最多的一句话是“有这个时间浪费在学编程语言上,干嘛不多学一点统计分析的方法呢?”。大家计算时间成本的方式完全不同。所以我的看法是,不管这个争论最后结果怎样,R语言在过去、在现在,甚至会在将来的很长一段时间里,在比较统计工具的更多更新更丰富上面,R语言都要胜于Python的。

上面简要介绍了R语言的优点,应该也能解答你对统计工具选择的一些疑虑。不过,我并不喜欢武林大赛式的捧一个踩一个,工具分高下没有意义,合适才是最好的。如果上面说到的这几点正好是你看中的,那R语言应该就是你的首选了。学R语言有一点不同,R语言是专业领域的编程语言,这对于教材的编写要求很高,熟悉编程的作者不太熟统计,熟悉统计的作者又不太熟编程,泛泛而谈不难,但魔鬼都是藏在细节里。这里我推荐《R for Everyone》,机械工业出版社华章公司出版了中文版,叫《R语言:实用数据分析和可视化技术》,从R语言最基本的使用入门,到比较高级的统计工具运用,都介绍得比较清楚,许多初学者容易踩坑的细节都贴心地给出了提醒,R语言在统计方面当然也有很多支持包,这本书不但介绍了这些包,捋出了包的背景,还颇有趣味地提了一笔包开发者之间出现的“军备竞赛”,写得十分用心。

作者简介:

莫凡——新技术深度爱好者,曾经从事信息安全前沿技术跟踪研究和数据分析工作,在各类信息安全类技术期刊杂志发表文章五十余篇,现转为投身高端知识“白菜化”项目,希望能让将更多听起来高大上的名词沾一沾人间烟火,成为日常中生活真正用得上的知识,著有《机器学习算法的数学解析与Python实现》。个人公众号“睡前机器学习”,个人知乎号“木羊”。

RECOMMEND

推荐阅读

01

学数据分析/挖掘应该先学Python,还是R语言?_第4张图片

《机器学习算法的数学解析与Python实现》

莫凡 著

点击链接了解详情并购买

推荐语:从生活案例中理解算法,发现算法的乐趣,再把算法应用到机器学习中,让你零基础掌握算法精髓,快速进入人工智能开发领域。

02

学数据分析/挖掘应该先学Python,还是R语言?_第5张图片

《R语言:实用数据分析和可视化技术》

点击链接了解详情并购买

推荐语:本书主要介绍R语言中20%的核心功能,但是这20%的功能足以让你解决80%的现代数据分析。每章都是以基础知识开始,提供大量的实例和代码。你将学习下载和安装R语言;设置和使用R语言环境;掌握基本的程序编写,数据导入、操作和可视化。然后在此基础上构建完整的线性和非线性模型,学习数据挖掘技术。接着学习使用LaTeX、RMarkdown和Shiny等R语言包。

更多精彩回顾

书讯 | 5月书讯 | 华章IT图书上新啦!重磅新书在线投喂...
上新 | 周志华领衔撰写,历时4年,宝箱书问世!
书单 | 创建字节跳动之前,张一鸣读过哪些硬核技术书?

干货 | G1垃圾回收算法概述

收藏 | TIOBE 5月榜单:时隔五年,C语言重返第一

你可能感兴趣的:(学数据分析/挖掘应该先学Python,还是R语言?)