当前位置: 首页>編程日記>正文

Python与R语言优缺点比较——“术业有专攻”

Python与R语言优缺点比较——“术业有专攻”

文章结构:

写在前面

R语言/背景/优点/缺点

Python/背景/优点/缺点

写在最后

写在前面

文章的很多信息来自于我的老师——辛勤所著(名字就叫辛勤)的《数据分析及可视化研究》,是上海大学及新西兰奥克兰大学联合培养博士,而新西兰奥克兰大学正是R语言的诞生地,所以文中介绍很多都是他书中的内容,我只是一个小小的搬运工。

本文约3500字,预计阅读8min

R语言背景

R语言是统计界老牌的计算机语言,从一出生就是为了做统计运算的。虽然在国内因为“大数据”的概念的流行才逐渐被大众熟悉,但在国际上R几乎是统计系的必修课,具有统治性的地位。它源于进行数据探索、统计分析、作图的解释性语言S,其出生具有浓烈的统计背景,但是发展却远远超过S,已经成为高校学生所选用的第二大工具语言,不仅是统计专业,R正在越来越多被其他专业的人所接受和推荐。

R的界面

 

R优点

R的优点概括起来主要有以下6个方面。

(1)免费开源

这一点非常重要。一方面直接导致了R在各行各业里的流行,相比于Tableau的收费性吓跑了一堆中小散客,SAS也因其收费性而多流行与公司内;另一方面R由于其免费开源成为其流行于研究机构和大学的最重要原因。

(2)函数功能齐全

由于本身设计就是为了数据分析,并且继承了S语言的遗产,R语言本身自带许多相关的功能和函数,并且稳定少bug,其分析速度堪比Matlab。

(3)占空间小

R总占空间小于300MB,RStudio 总占空间小于500MB,相比于其他主流的数据分析软件来说,“性价比”(性能/占空间)是很高的。这样轻便且高效的软件可以在不消耗太多机子的性能和空间的基础上,亦能满足各种数据分析的需求。

主流分析软件总占空间对比

软件

总占空间(估值)

R3.3.1(最新版为4.2.0)

259MB

R Studio

435MB

SPSS 19

727MB

Tableau 9.3

990MB

Matlab 2015a

10.18GB

SAS 9.4

20GB

(4)与各种OS(操作系统)的兼容性好

R可以兼容UNIN,Linux,Mac OS和Windows共4个OS,囊括了现今的主流OS,并且更新速度很快。

(5)共享的海量包裹

R的另一个特点就在于“包裹”这个概念,这也归功于它免费开源的初衷,也是它逐渐受各行各业欢迎的原因。由于其免费开源,所以很多用户会把自己想到的各种解决方案分享到网站并且开放源代码。这就说明,如果你在现实中用R想要解决一个问题,可能之前已经有人把类似的问题的解决方案分享出去了,你只要能找到并下载安装,按照自己的需求适当修改后,就可以马上解决问题。这就相当于主程序上安装插件,移动端上安装APP,都是为扩展功能。Google首席经济学家哈尔·瓦里安说:R的最让人惊艳之处在于你可以通过修改它来做所有的事情,而你已经拥有大量可用的工具包,这无疑是让你站在居然的肩膀上工作。

(6)可视化

R的作图能力一直都是让人叹为观止的,它本身自带的画图工具就已经十分优秀,但是它还有一个对于业界来说如雷贯耳的一个神一般的绘图包裹——ggplot2。如果说之前的Tableau的可视化相当于入门级的美图秀秀,Excel的可视化模块相当于Photoshop,那么R语言的ggplot2就是SAI了。它的核心是将绘图看作对数据的映射,不去定义具体的图形(如直方图、散点图),而是定义各种底层组件(如线条、方块)来合成复杂的图形,这使它能以非常简洁的函数构建各类图形,而且默认条件下的绘图品质就能达到出版要求。因此,用ggplot2做出的图都非常简洁美观。此外,还有比较好上手的lattice包等。如果将ggplot2用熟了之后,一堆数据可视化软件就可以被打入冷宫了。

R绘图举例

 

R缺点

当然在实际应用中,R也存在以下缺点。

(1)数据管理

术业有专攻,R的数据管理本身就是弱项,这就导致其在处理大文本的能力不高。SAS能够比得上R的一点,就在于其兼顾数据管理和数据分析,对数据的各种复杂操作在SAS中都相对简单。这也是为什么许多人都会在别的环境中把数据(特别是量大时)整理好、或分割好后再导入R进行分析的原因。

(2)包裹可靠性

R是一个免费开源的平台,这就意味着每个使用R的人都可以上传自己写的包裹。相对的,质量不会有专人把关,不同版本之间可能存在缺陷,所以包裹虽然好,但是使用需谨慎。当然在众多口碑积累下的包裹相对值得信赖,但是如果需要使用一些不常用的包裹,必须搞清楚里面具体的解决步骤、函数和变量的使用方法,并且核实输出,以免造成不必要的麻烦。并且不同版本的包裹和平台之间的不同处理也要小心,毕竟是别人写的东西,自己不是最清楚的,使用时会存在一定的风险。

Python背景

Python的诞生非常不正经,它是由Guido van Rossum在1989年阿姆斯特丹的圣诞节中为了打发无聊而开发的脚本解释程序,作为对ABC语言的继承。这种“随意”的诞生也标志着Python的特点:简单、易读、可扩展性,是一个相当简单好学且万能型的语言。Python已经成为最受欢迎的程序设计语言之一。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。自从2004年之后,Python的使用率呈线性增长。

通过Python来写定制爬虫是一件非常方便的事情。由于其简洁的语法结构,通常使用java需要数百行的代码,通过Python往往只要数十行就能轻松搞定。

Python也有许多包,用于统计分析的包比较常见的有numpy、scipy和panda,数据可视化的包有Matplotlib。说到底,Python不是一个专门做数据统计的语言,它像瑞士军刀一样,是个比较平衡的语言,所以应用范围奇广,而数据分析只是其中的一个方面运用而已。

Python优点

(1)简单。Python是一个简洁主义至上的语言,所以及其易学,语言本身就像英语一样。这就可以让用户花更多的功夫在解决问题上而不是研究语言本身。并且Python自带非常简单的说明文档也能帮助用户学习。这些都决定了Python的学习曲线比R要平稳,R语言入门也是比较容易的,但是深入下去的学习就相对要花更多的精力。

Python是高级语言,这就意味着在用Python编写程序时不需要考虑底层细节,诸如管理程序使用内存等,这些都是让用户专心解决问题而做出的努力。

(2)速度快。虽然说无论是R还是Python的底层语言都是C或者C++,所以两种语言的运行都是非常快的。但是相比之下,Python可以直接处理G量级的数据,而R要做到这一点就很困难。R的数据管理能力相对薄弱,所以面对大量数据更多要先在其他平台上整理好再导入R进行分析。这样看来,Python就像R再自带一个数据管理功能。所谓的速度快是在这个意义上说的。

(3)免费开源。Python的源代码,包括程序都可以从网上随意免费下载。

(4)Python是“胶水语言”。如果问起Python的特点,除了“简单”“万能”之外,“胶水语言”也是一定提及的关键词。胶水语言,就是一种语言可以把用其他语言开发的程序都连接在一起的特性。Python就是这样一种可以把其它语言的模块连接在一起的一种胶水语言。这就对于一些用Python来处理相对薄弱的部分,可以用其他更加合适的语言来写,然后再连接到Python的部分上。这就使Python本身的能力得到扩展,也能在不能直接连接的各语言中架上桥梁,优化整个程序。

(5)强大的库。Python标准库十分强大,它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和与其他系统有关的操作。这被称作Python的“功能齐全”概念。

Python缺点

(1)Python的统计功能相对R来说比较薄弱。

(2)R语言由于其极富统计学背景的出生,步S语言的后尘,自带的处理功能和函数模型都比Python要齐全,随调随用。

写在最后

很多人都说,科学家学R语言,工程师学Python;统计学生学R语言,计算机生学Python。其实两种语言之间没有优劣之分,更多的是相辅相成的关系,因为闻道有先后,术业有专攻。最后用一句话概括R语言和Python,就各引用两者官网上的一句话:

R is free software environment for statistical computing and graphics.

Python is a programming language that lets you work quickly and integrate systems more effectively.


https://www.fengoutiyan.com/post/15148.html

相关文章:

  • r语言和Python
  • r语言与python
  • r语言的优点
  • r语言 python
  • r语言和python哪个好学
  • r和python哪个难
  • r语言和python都要学吗
  • r语言和python哪个简单
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機