对于想从事数据行业的人和数据工作者来说,是学习R还是 python,哪个工具更实用一直被大家争论。Martijn Theuwissen,DataCamp 的教育专家详细比较了这两个工具。
Python 和R是统计学中两种最流行的的编程语言,R的功能性主要是统计学家在开发时考虑的(R具有强大的可视化功能),而 Python 因为易于理解的语法被大家所接受。
- 1).运算速度:
针对于程序速度的比较,有众多的测试方法和不同的结果。
综合其他各个地方的测试结果,其实大体说来从基本运算速度来说,Python > R. 但是要注意,这里所说的运算速度是“基本计算”。也就是说不涉及引用特殊package,不用特殊数据结构和运算方式(比如R中的矢量化运算)的运算。而这样的运算比较很大程度上取决于基本程序逻辑的速度,比如for循环。R在这点的表现是很差的。基本上会比pyhon慢 3~10倍。
但是,如果你愿意多花些心思更好的利用矢量化编程进行计算,那么无论从程序的长度来是速度上,都会使R的表现有显著性提高。具体的内容就不重复了。总之,在这样的使用方式下,对大部分运算,R的速度是可以和python接近的,当然,用户也需要花更多地心思去优化程序。
除此之外,在实际使用的角度来说,数据分析在R中大部分时候使用已有的方法,因此可以使用众多已经成型的package。如果你使用的package质量很好,通常在大计算量的程序中,作者实际使用的都是更低级更高效的语言(比如C, Fortran)。因此,这些大计算量的步骤实际上是以最高效的方式完成的。如果相应的运算在pyhon里面没有调用其他低级语言的优化,R就可以在这些方面胜过python。我这里说到的是不需要自己编写的底层语言调用,在R和python中都可以实现调用别的语言,但是这需要用户自己编程,从人工角度来讲,专业性较高,不在讨论范围。
整体来说,对于对R使用和编程有一定深入理解的人来说,我不认为R做数据分析的速度会比python差。但是对于简单粗暴的编程方式,python的确更胜一筹。
- 2).全面性:
从这点来说,我认为Python的确胜过R。无论是对其他语言的调用,和数据源的连接、读取,对系统的操作,还是正则表达和文字处理,Python都有着明显优势。毕竟,python本身是作为一门计算机编程语言出现的,而R本身只是源于统计计算。所以从语言的全面性来说,两者差异显著。
综上所述,本人认为,对于本地文件直接的数据分析,大部分时候R是比较Python更好的 (速度相近,但分析更专业)。如果涉及多方资源的协调(比如远程、数据库、系统、网页),那么最好的方式是将python和R相结合使用。
当然,每种语言有自己的学习曲线。因此学习本身也要多花时间,因此如何选取还要依赖于个人而论。
- 3).优势对比:
- 在以下领域中,Python 比R 更有优势:
◆ 网络爬虫和数据抓取:虽然R中的rvest已经简化了网页抓取, Python的beautifulsoup和Scrapy更加成熟,并提供更多的功能。 ◆ 数据库连接:虽然R有大量的用于连接到数据库的选项, Python的sqlachemy只用了一个程序包就提供了所有的数据库连接功能,并可广泛用于生产环境。
- 而在以下领域中,R比Python更有优势:
◆ 统计分析选项:尽管Python的SciPy和 Pandas以及 statsmodels的组合提供了很大的一套统计分析工具,而R是专门围绕着统计分析应用等创建的,因此提供了更多的相关工具。 ◆ 交互式图像或控制板:bokeh, plotly和intuitics最近都把Python的图形使用扩展到了Web浏览器,但是举个使用shiny的例子,R中的shiny 控制面板运行速度更快,而且往往需要更少的代码。
此外,由于数据科学团队现在拥有一个比较广泛的技能库,任何应用程序所选择的编程语言都可能用到以前的知识和经验。对于一些应用,特别是原型设计和开发应用,人们使用他们已知的工具则速度会更快。
- 纯文本 的“Air Gap(网闸)”策略
指在完全断开网络物理连接的基础上,实现合法信息的共享。本文中指用纯文本文件实现两种语言间代码的共享——译者注。使用纯文本作为两种语言之间的物理隔离,你需要按如下步骤进行。1.从命令行中重构你的R和Python脚本,并接受命令行参数。 2.输出共享数据到公共文件格式。 3.在一种语言中执行另一种语言,按要求传递参数。
- 优势:
★ 最简单的方法,通常最快 ★ 可以轻松查看中间输出结果 ★ 已有常见文件格式,如: CSV , JSON , YAML的解析器
- 劣势:
☆ 需要事先商定一个共同的模式或文件格式 ☆ 如果流程变长的话,难以管理中间输出结果和路径 ☆ 如果数据量变大,本地磁盘读写将成为瓶颈
- 4).R和Python:数据科学行业的表现:
如果你看一下最近的民意调查,在数据分析的编程语言方面,R是明显的赢家。 有越来越多的人从研发转向Python。此外,有越来越多的公司使用这两种语言来进行组合。 如果你打算从事数据行业,你用好学会这两种语言。招聘趋势显示这两个技能的需求日益增加,而工资远高于平均水平。
暂无数据