这两个都是编程语言
R 是一种专门为统计计算和数据分析而设计的语言,它具有丰富的统计函数和绘图工具,常用于学术研究、数据分析和统计建模等领域。
Python 是一种通用型编程语言,具有简单易学、语法简洁、功能强大等特点。它在数据科学、机器学习、Web 开发、自动化脚本、科学计算等众多领域都有广泛的应用,拥有大量的第三方库和活跃的社区支持
勾选之后会自动安装
一下基于参考资料
R和Python 都是高级分析工具,各自都有众多的簇拥者和强大的社区支持,在网络爬虫、数据加工、数据可视化、统计分析、机器学习、深度学习等领域都有丰富第三方包提供调用。以下罗列R和python在各数据工作领域的资料信息,看看它们都有啥?
R与Python,有强大的社区资源,可供学习和经验分享:
R语言 | Python语言 |
---|---|
R journal 链接:https://journal.r-project.org Stack Overflow 链接:https://stackoverflow.com/ Rweekly 链接:https://rweekly.org/ | Python中文社区维基 链接:https://python-chinese.github.io/ python中文学习大本营 链接:http://www.pythondoc.com/ PythonTab 链接:https://www.pythontab.com/ |
在不同数据场景下,R和Python有丰富的第三包可供加载和框架选择,可以很好帮助分析师、研究员以及开发员提高工作效率:
功能名称 | R语言 | Python语言 |
---|---|---|
爬虫 | Rvest、Rcurl、httr、XML、Rwebdriver | Urllib、requests、bs4、selenium、splash |
数据读取 | Openxlsx、utils、readxl、xlsx、xlsx2、data.table | pandas |
数据加工(ETL) | Plyr、dplyr、reshape2、caret、tidyr、mice、stringr | numpy、pandas、sklearn、re |
数据可视化 | ggplot2、ggmap、lattice、gganimate、leaflet、REmap、plotly、rCharts、animation | Matplotlib、seaboen、bokeh、pyecharts、Pygal |
统计分析、回归分析 | Stats、tseries、lmtest、nlme | statsmodels、scipy |
机器学习 | Stats、glmnet | statsmodels、scipy |
深度学习 | Keras、MXNetR、darch、deepnet、H2O、deepr | TensorFlow、Keras、Pytorch、Theano、MXNET |
通过加载不同的功能包,用户可以在用少量的代码下,快速实现算法逻辑:
算法名称 | R语言 | Python语言 |
---|---|---|
决策树算法 | Repart、party、C50、RWeka | sklearn |
集成算法 | adabag、randomForest | sklearn、xgboost |
贝叶斯算法 | klaR | sklearn |
K邻近算法 | Stats、kknn | sklearn |
支持向量机 | Kernlab、e1071 | sklearn |
神经网络 | RSNNS、neuralnet、nnet | Neurolab、tensorflow |
聚类算法 | stats、Nbclust、fpc、mclust | sklearn |
关联规则 | arules | mlxtend |
这么看,好像R和Python能做的事情都差不多,在主要的数据处理场景,双方都可以通过加载包和调用函数来解决问题。然而,二者虽然彼此功能覆盖,但却不能因此说他们之间没有区别,它们还是有各自独特的地方:
- 在深度学习领域,例如自然语言处理、图像识别等。相对于R,Python对GPU有更好的支持,虽然R也支持KERAS运算,但是实现效率较低、成本较高,你可以想象这样的一个场景,当你使用R做深度学习时,经历一番搜索和研究,刚把需要的环境搭建好,人家用Python的已经可以提交项目结果了。因此,在深度学习领域,Python会有更好的表现。
- 在机器学习领域,Python与R算是难分仲伯,可能Python还是略好于R一些。最主要原因是每当有新的套件或者算法时,基本是用Python先开发出来。Python这样的优势还体现在网络爬虫领域,尤其是研发人员在进行一些比较复杂的爬虫任务时,Python会有更多的资源,包含方法和套件。除此之外,在计算效率、计算稳定性等方面两者并无显著差异。
- 在统计分析领域,R的综合表现更优于Python。R最早是统计学家为统计工作所开发的工具,他们甚至通过R代码和程序来交流分析思想,许多比较复杂的统计模型和统计检验方法在R上都可以比较轻松的实现。本人也曾参与过一些项目的统计分析工作,并借机对比Python和R处理同样任务的执行情况,R确实会比Python方便不少。
- 在数据可视化领域,虽然Python有一些很好的可视化程序库,例如Seaborn、Bokeh和Pygal,但与R对比,在Python中进行可视化有些复杂,可调节的参数较少,且图表样式的控制会更麻烦一些。对于一个分析师或一个研发人员,在历经“艰辛”得到分析结果后,却需要花很多时间调整可视化展示结果,其实是会缺少耐心的,而R在这方面的会给出更好的体验。
对比Python,R还有一个不得不提的优点,就是基于web交互界面应用框架Shiny,和Desktop版Rstudio,它们安装简单,部署方便,在第三方资源包管理、脚本编辑、变量管理、数据预览、结果呈现方面都为使用者提供了很大的便利。
另外,R与Python也并不是完全孤立的。在R中,用户可以通过rPython包运行Python代码,调用Python的函数。而在Python中,也可以使用RPy2包运行R代码,同样提供了一个从Python到R的输送路径,基本实现了用户“取二者精华而用之“的美好愿景。
本次对R和Python的分析更多的体现在“定性”层面,关于“定量”层面的对比(计算性能方面的对比),如果有合适机会,将会继续分享。想了解“定量”层面对比的读者,可以阅读以下网络上“前辈‘们的文章:
推荐文章1: 如何将Python和R整合进一个数据分析流程
推荐文章2: 大数据分析Python和R的优缺点
推荐文章3: Python与R的争锋:大数据初学者该怎样选?
二、R与Python选哪个?
那么,说了这么多,R与Python到底应该学哪个?通过以下两个问题的回答,希望你的心中能有你想要的答案。
- 第一个问题是:你的公司同事们现在使用哪种语言?
所有的工具的使用的最终目的,是为方便发现问题和为问题寻求最优解决方案的,因此建议学习某种语言前,应该以解决问题为首要目标。如果你发现你的公司或者你所在的部门已经开始运用某种语言作为分析工具(不局限于Python或者R),那么建议你优先考虑该语言,因为你的“所学“可以立马转化为你的”所用“,进而反过来继续促使你”学“,周而复始,对知识频繁的输入和输出,这是最有效的成长和价值体现方式。不仅如此,这样的方式也方便你与同事分享和维护代码,提高沟通和协同工作的效率,更容易实现公司成果产出,这比单纯讨论哪种语言更”牛逼“更为重要。
- 第二个问题是:你准备花多少时间学习?需要解决什么样的问题?
面对问题,当你精力有限时,你不得不面临指标是投入产出比,即,如何解决同样的问题花最少的时间,或者花同样的时间解决更多的问题。
在学习时间方面:刚开始学习R时有一个陡峭的学习曲线,到后面趋于平缓,因此R的入门门槛较高,但是一旦了解了最基本的知识,就能比较容易的学习更高级的内容。而与之对应的是,Python语句易读易懂,学习曲线起始阶段相对较低且平缓,到后面会逐渐陡峭,也就是Python入门门槛低,但是到后续更深层的高级应用时,学习会比较困难。
在问题类型方面:经过上文阐述,在深度学习、机器学习、网络爬虫和API构建,Python的综合实力要优于R;而在数理统计分析、数据处理、数据可视化及IDE交互体验,R的综合表现要优于Python。
因为文章着重讨论“数据分析,R与Python怎么选?”,也考虑数据分析师的职业发展路径,因此在统计分析、数据可视化、数据处理、机器学习、深度学习这五个相关的领域,结合时间成本,给出建议如下:
场景分类 | 统计分析、数据处理、 数据可视化 | 数据处理、深度学习、 机器学习 |
---|---|---|
时间比较充裕 | 选R | R和Python结合使用 |
时间比较不充裕 | 选R(偏数理研究背景)/ 选Python(偏工程开发背景) | 选Python |
写在最后
文章的建议是在特定场景和有限资源的前提下,选择R或者Python开始数据分析师“菜鸟时期”的工作。但是,R和Python在实际运用中它们各有所长,各具价值,日后随着解决的问题越多,值得深挖的点也会越来越多,如果还是专注于”R还是Python?”的问题,那么就会忽视这两者给数据工作的带来的最大价值。作者还是强调,任何工具的学习和运用,最终的目的都是帮助更好的发现问题和解决问题,至于R还是Python,当你还在纠结这个选项的时候,许多团队已经同时装备着R和Python,解决了一个又一个问题了!