在数据科学界大门口,新手小白们总是面面相觑,R语言和Python两大巨头各占风骚,势如水火,引起入门选手的诸多疑问——
◆ 编程零基础,我应该选哪个入门比较好?
◆ 我学XX专业,应该用R语言还是Python?
◆ R和Python各自优缺点是什么,哪个更难?
◆未来哪个就业更吃香,薪资更高,选择更广?
Emmm连学哪个都选不出来,算了,我还是不学了叭……
万里长征第一步,学院君带带你。究竟R语言和Python在哪些领域使用更佳?新手如何选择学习,才能更快地启航?我们认真来唠唠这个。
友情提示:本文适合收藏!
01 开发目的
任何不聊原始目的的选择都是耍流氓。工具的缘起历史,决定了它使用的偏向性。
▌R语言
R是由统计学家开发的,它的出生就肩负着统计分析、绘图、数据挖掘的重要使命。因此在R的语言体系里,有非常多统计学的原理和知识。
如果你具备一些统计背景,R会令你使用各类model和复杂的公式时更加愉悦有爽感,因为你总能找到对应的package,并且几行代码就可以调用搞定。
▌Python
Python的创始人初衷,是为非专业程序员设计的一种开放型的语言。优雅,明确,简单,是它的标签。因此,总有人高唱「人生苦短,我用Python」。
数据分析、网络爬虫、编程开发、人工智能等,作为一门多功能的胶水语言,Python的使用目的和学习路径更加多样化。
02 适用人群
尽管都是数据科学界的当红炸子鸡,工具的选择会因为你的领域和你想解决的问题因人而异。
▌R语言
起初R在学术研究和调查工作中使用比较多,逐渐延伸至企业商业界。使用人群不一定需要计算机背景,统计、金融、经济、核电、环境、医疗、物流管理,乃至人文学科,都有R语言的立足之地。
同样,鉴于R 在数据探索、统计分析上,是一种更高效的独立数据分析工具,具备良好数理统计知识背景的人使用起来更加得心应手,自带base一R的基础模块、mle一极大似然估计模块、ts一时间序列分析模块、mva一多元统计分析模块等。
▌Python
相比R非标准的代码,Python作为出了名的语法简洁工具,对于一些稍有编程基础的人来说格外友好,可以减少在编程进程中的磕绊。
没有任何基础的编程小白一样可以上手Python,适用范围同样覆盖金融、医疗、管理、传播等各行各业。
如果你在数据分析之余,还需要与诸如Web应用程序相整合,或者需要和数据源的连接、读取,调用其他语言等,使用Python是更加方便的选择,「一站式解决」。
03 学习曲线
这是小白入门前最关心的问题之一,究竟哪个学起来更难?
实际上,由于不了解每个人的知识背景和学习成本,这个问题并不能做出非黑即白的绝对性答案。这也是为什么,各类论坛上R和Python的使用者关于入门难度总是各执一词。
▌R语言
开始学习R,了解了最基本知识和语言逻辑,入门不难。以及数理统计基础好的会越学越爽,相反,如果完全没有数理背景,会感觉到明显增幅的难度。
▌Python
Python看重可读性和易用性,它的学习曲线比较平缓。对于初级小白来讲,比较友好,但如果纵深学习以及拓展方向,还需要掌握大量package的知识和使用方法。
如果你真的需要定义对比二者学习曲线的难度,你需要首先明确,你的学习目的是什么。
04 行业选择&发展方向
网络上有很多R与Python人气对比的数据,综合来看,Python的排名更高,主要原因是R仅在数据科学的环境中使用,而Python作为一种通用语言,使用广泛。
▌R语言
应用R的场景:数据探索、统计分析、数据可视化
应用 R技能的职位:数据分析师、数据科学家、投资分析师、税务人员、管理人员、科研人员等等
发展方向:结合各行业的专业知识,做深度的业务数据处理与统计分析
▌Python
应用Python的场景:数据分析、网络爬虫、系统编程、图形处理、文本处理、数据库编程、网络编程、Web编程、数据库连接、人工智能、机器学习等
应用Python的职位:数据架构师、数据分析师、数据工程师、数据科学家、程序开发员等
发展方向:结合各行业的专业知识,做各类型or协作型工作
05 优缺点对比分析(划重点)
来了!在具体的使用中,两个工具一定有各自的优劣势,各自的侧重点。明确哪一点对你最重要,是你选择的关键。
第一战:数据可视化
字不如表,表不如图。R和可视化是绝配,一些必备的可视化软件包如ggplot2,ggvis,googleVis和rCharts,由于统计模型完善,细节设计精美,在R里能够使用一行或几行代码很快完成漂亮大气装X一百分的数据图,清楚看到数据的特征和走势。
Python也有一些不错的可视化库,诸如Matplotlib, Seaborn,Bokeh和Pygal,它同样可以完成和R一样精美的数据图,但需要你自己写代码去表达和定义,例如线形图、柱状图,横纵坐标的距离与比例,颜色的选择等等。
(Py:不要为难我胖虎,画图可以,要美你自己写! )
第二战:数据分析
R包含更多的数据分析内建功能,可以直接使用summary内建函数,dataframe是R内置的结构。
Python中需要依靠第三方软件包,诸如statsmodels、pandas包,提供强大的数据分析功能。
第三战:数据结构
R中的数据结构非常的简单,主要包括向量(一维)、多维数组(二维时为矩阵)、列表(非结构化数据)、数据框(结构化数据)。R的变量类型比较单一,在不同的包里变量类型是一样的。
Python 则包含更丰富的数据结构来实现数据更精准的访问和内存控制,多维数组(可读写、有序)、元组(只读、有序)、集合(重复性、无序)、字典(Key-Value)等等。在不同的包里,也会有不同的表达来定义变量,例如在pandas包里用series表示列表,而在numpy包里列表的表达则使用array。
相比来说,Python更丰富的数据结构会提升学习成本,但运行更精准,速度也更快。
第四战:运行速度
R的运行速度比较慢,在大样本的回归中,如使用不当就会出现内存不足的情况。通常,需要先通过数据库把大数据转化为小数据(通过groupby)才能交给R做分析。或者和其他大数据处理工具结合起来,例如spark。
(By学院某位老师:根据我的经验,R不能承受太大的数据,19位以上的数字极有可能算错,尤其是矩阵运算。)
Python虽然没有C的运行快,但与R相比,还是非常有优势的,可以直接处理上G的数据,并且在非常大的数据运算上的准确性也更好一些。
第五战:帮助文档与自学成本
相比于使用人群更广泛的Python,R的帮助文档相对不够细致和完善,通常附带的栗子也比较简洁,有一些大致的讲解和用法。
而Python的代码语句、栗子展示、参数分析等细节展示比较完善,撰写帮助文档的人更多会出示一个完整的demo,因而对于自学的人来说比较友好。
(学院君OS:这点主要还是,人多力量大hhhh)
此外,Python是一种通用的语言,你可以与小伙伴共享Notebook,而无需他们安装任何东西,更重要的是,可以把不同背景的人集合在一起,灵活性强,扩展性好,多功能工作,也极有可能碰撞出更多思维火花。
第六战:来点栗子我们实战叭!
文本信息挖掘,是一种常见的数据处理与分析使用场景,比如说电商网购的评价,社交网站的标签,新闻里的情感分析等等。
使用R做情感分析时,需要对数据进行预处理,清除掉没用的符号后,做分词。然后构建单词-文档-标签数据集-创建文档-词项矩阵,再借助各类包来进行机器学习算法。
由于情感分析的文本通常是一个非常规模化的数据,在R里相对处理速度比较慢,并且需要使用多个包来协作。
使用Python做情感分析时,优先需要将句子分解为单词,然后操作特征提取,去除停用词;接下来降维,再进行分类算法模型训练和模型评估。
Python的包集成性很强,尤其对于文本挖掘情感分析这个问题来讲,可以更快更简便地完成这个操作。
时间序列分析,是根据系统观察得到的时间序列数据,通过曲线拟合和参数估计来建立数学模型的理论和方法,可以用在金融领域、气象预测、市场分析领域等。
使用R语言做时序分析时,因为R拥有许多程序包可用于处理规则和不规则时间序列,因而很有优势,比如library(xts),library(timeSeires),library(zoo)—时间基础包,library(FinTS)--调用其中的自回归检验函数等,出具的结果也非常直观和清晰。
使用Python做时序分析时,由于没有特别完善的时序分析包,没有专门为了做预测而写的方程,和可视化一样,需要操作者自行写更多的代码。常用的,statsmodels模块,该模块可以用来进行时间序列的差分,建模和模型的检验。
通过以上两个栗子你感受到了吗!
工具不分好坏,是因为你具体想要解决的问题而异的。
总结
经过了上文这么多的对比,究竟如何选择学习呢?你要根据需求,问问自己——
你想解决什么问题?
你学习一门语言的成本?
在你的领域中常用的工具是什么?
想清楚才有选择方向!
目前,客观来说,由于Python是一门灵活性强,扩展性好,多功能又能胜任机器学习和数据分析工作的编程语言,因此在就业市场上,Python的身影似乎更加火辣,在各项排行榜上排位也更靠前。
但如果你是对统计数据、数据可视化、数据操作、概率论等深入点感兴趣,并且不涉及软件开发,你可以选择R来完成你的工作。
当然啦,一个系统不一定能解决你所有的问题。传说中的「左手Python, 右手R」可不是开玩笑的。
数据科学领域里有很多互通的部分。R和Python之间有很多互相启发的地方,如Python的pandas包中Dataframe受到R中dataframe的影响,rvest包则来自BeautifulSoup的启发。
两者的生态系统都在不断发展壮大,同时学会Python和R这两把刷子才是走遍天下无敌手的王道啊!