作者介绍

知春里@伟仔

不知名数据科学家。

持续写《数据分析》和《数据产品》的系列文章,欢迎关注。

01

选R还是Python?

“球鞋是买阿迪还是买耐克?”

“午餐吃肯德基还是麦当劳?”

“拿到阿里和腾讯的Offer,去哪一家?”

“你女朋友和你妈同时掉水里了,先救谁?”

面对这样的灵魂拷问,你能回答上几个呢?同样,如果你是数据分析的新手,或者正面临工作中项目分析工具的选型,那你可能正面临这样的问题:“选R,还是选Python?”,如果是这样,希望这篇文章能帮助到你。

02

R与Python都有啥?

R语言

相信各位有数理统计、金融计量、生物科学背景的同学对R语言都不陌生,而且他们的毕业论文和期刊论文的写作很可能已经用到了R。

R自带常用的统计分析函数和十分丰富的功能包支持:

  • 可以用R快速生成1000条符合正态分布或卡方分布的数据,在分析相关的问题时,它可以帮你节省不少的时间;

    • 你用Excel、PPT或者Tableau制作的图表和报告,用R也能一样的制作,而且可以程序化部署,定期自动更新数据生成图表和分析报告;

    • 对常用的数据分析方法和机器学习算法都可以通过加载相关的包,直接调用函数,即使非常复杂的算法,也可以只通过两三行的代码搞定;

    • R标配的IDE-Rstudio,用户有着很好的交互和使用体验。

Python语言

“假如某一天,你在马路边随机问一个刚放学的小朋友,可能他不知道R,但他一定听说过Python”。可见,要说近年来最风靡、最流行的计算机语言,绝对非python莫属了。

相对于C和JAVA语言,Python的学习门槛更低,无需繁杂的变量声明等特点,大幅减少程序员的操作负担,同时语法结构接近英文表达,易于读写,甚至被称为最“优雅”的编程语言。更重要的是,Python不仅运用于后端计算服务和前端网页开发,也同样能处理数据分析、机器学习的问题,具有很强的扩展性和兼容性,你能想到的它几乎都能做到,十分神奇。

R vs Python

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整合进一个数据分析流程https://mp.weixin.qq.com/s__biz=MzA3MTM3NTA5Ng==&mid=2651054566&idx=1&sn=ba46bf709bc61f423c71e3d71877136e&scene=21#wechat_redirect推荐文章2:大数据分析Python和R的优缺点https://zhuanlan.zhihu.com/p/183876253推荐文章3:Python与R的争锋:大数据初学者该怎样选?https://www.lagou.com/lgeduarticle/70218.html

03

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,解决了一个又一个问题了!

我知道你在看

python复杂网络点图可视化_数据分析:R与Python怎么选?相关推荐

  1. python复杂网络点图可视化_Python学习工具:9个用来爬取网络站点的 Python 库

    Python学习工具 :总结了9个用来爬取网络站点的Python 库,有你在用的吗? Scrapy 一个开源和协作框架,用于从网站中提取所需的数据. 以快速,简单,可扩展的方式. cola 一个分布式 ...

  2. python 文件格式转换_数据分析:基于Python的自定义文件格式转换系统

    ( 白宁超 2018年7月16日14:47:41 ) 导读:随着大数据的快速发展,自然语言处理.数据挖掘.机器学习技术应用愈加广泛.针对大数据的预处理工作是一项庞杂.棘手的工作.首先数据采集和存储,尤 ...

  3. python环境下数据操作_数据分析环境搭建和Python基础知识

    搭建数据分析环境主要包括使用anaconda管理包和环境:使用Jupyter notebook将说明文本.数学方程.代码和可视化内容全部组合到一个易于共享的文档中.Python基础知识包括关键点(数据 ...

  4. python数据处理用什么软件_数据分析都会用到哪些工具?

    今天来聊聊数据分析都会用到的工具,你都在用什么呢? 数据分析的工具有很多,从数据分析岗位的描述里其实就能发现企业都需要会哪些工具的人,这里我分成了4类来聊聊.分别是基础.可视化.专业的统计分析以及编程 ...

  5. python后端还是数据分析好_数据分析和web后端选哪个 知乎

    数据分析和web后端选哪个 知乎以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据分析和web后端选哪个 知乎 WEB ...

  6. python生物数据分析师职业技能_数据分析行业各个职业需要的技能是什么?

    就目前而言,很多人看到了数据分析行业的光明前景,于是就想进入数据分析的行业中.但是,想成为一名合格的数据分析师,需要掌握很多的技能.那么一名合格的数据分析师需要掌握哪些技能呢?其实数据分析行业的职业是 ...

  7. python微博评论爬虫_详解用python写网络爬虫-爬取新浪微博评论 基于Python的新浪微博爬虫研究...

    怎样爬取新浪微博的评论信息 针对八爪鱼在微博的应用上,除了用户信息之外还包括话题内容方面的采集,目前绝大多数企业均在微博设有官方微博,八爪鱼可以协助企业快速及时的抓取与企业产品相关联的话题信息,规则市 ...

  8. python的gui界面 可视化_使用可视化设计窗体的GUI程序

    示例Demo2_1用PyQt5的一些类创建了一个简单的GUI应用程序,窗体及窗体上的标签对象的创建和属性设置都完全由代码完成.显然这种纯代码方式构造UI的方式是比较麻烦的,特别是在窗体上组件比较多.层 ...

  9. python语言是网络编程语言吗_三大主流编程语言Python为啥这么牛?

    前段时间,潘石屹几乎将旗下几个耳熟能详的SOHO地标项目,售卖一空.坊间舆论躁动,以为潘石屹要学李嘉诚一手,纷纷网络讨伐:"别让潘石屹跑了!"但他却很镇定,在56岁生日当天,发了条 ...

最新文章

  1. 【组合数学】组合恒等式 ( 变上项求和 1 组合恒等式 | 三种组合恒等式证明方法总结 | 证明变上项求和 1 组合恒等式 )
  2. python解析并读取PDF文件:函数总结
  3. 检验是否服从同一分布
  4. rpg制作大师2003_RPG制作大师MV 我们一起做游戏(十五)
  5. SQL server 2008 中的五个系统数据库详解
  6. XmlPullParser文件解析android
  7. Python爬虫爬取微博热搜保存为 Markdown 文件
  8. leetcode 9. 回文数(python)
  9. 《Go Web编程实战派——从入门到精通》学习笔记之第1章 Go基础入门
  10. 接入华为推送用API给iOS应用发消息时如何获取access_token?
  11. 什么是VIE:Variable Interest Entities
  12. python seo 采集内容_SEO如何处理采集内容(4)–转自{GoGo闯}
  13. 多次散射 matlab,一种利用外推获得具有多次散射目标远场rcs的方法
  14. 信号基础知识--FFT DFT
  15. mapboxGL和高德API结合实现路径规划
  16. 小白操作:zuul网关升级为getway网关,以及jwt的使用
  17. NB-IoT通信模组读取IMEI、ICCID、IMSI
  18. 郭天祥ARM9架构嵌入式linux培训视频教程
  19. Unity:DOTween来回运行或者缩放等LoopType.Yoyo
  20. 探秘 App Clips

热门文章

  1. 如何深入理解 iOS 开发中的锁?
  2. NDK-r25交叉编译qemu-7.0.0 第66步报错
  3. 磁感应强度、磁场强度、磁动势之三者间的关系
  4. Java免费获取实时汇率API
  5. java 获取回车字符_java回车键的字符
  6. 直播预告 | NeurIPS 专场一 青年科学家专场
  7. C++面向对象实现一个模板类链表
  8. 医学自然语言处理(NLP)相关论文汇总之 NAACL 2021
  9. ArcGIS简单的三维演示
  10. Selenium打开浏览器闪退问题(浏览器驱动是对应的前提)-解决办法