R和Python是目前最流行的两款高级编程语言,被大量运用于数据科学领域。两者都是开源的,也都有非常活跃的 区来支撑。那么问题来了:对于初学者,到底应该学哪个p>
我的建议:看情况(it depends),选用何种编程语言,依赖于你的背景以及你的长期目标。换句话说:你是干啥的你的目标是什么p>
事实上,对于想从事数据科学的新手,R和Python可能是最好的/唯一的两个选择。哪个更好呢p>
在这篇博客,我将介绍R和Python各自的优势以及两者间的PK。我将先介绍R,然后介绍Python,最后在文末总结我的观点。
1. R的优势
为了避免读者阅读疲劳,用两张R语言绘制的图来暖一下场:
R语言由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman于1995设计出来(由于两人的名字均以 ‘R’ 字母开头,因此命名为R语言),现在由“R核心开发团队“负责开发。
虽然R主要用于数据分析、绘图以及数据挖掘,但也有人用作矩阵计算。其计算速度可媲美专用于矩阵计算的开源软件GNU Octave和商业软件MATLAB。
起初R主要在学术研究中使用,但近年来在企业界也表现突出,这使得R成为企业中使用的全球发展最快的统计语言之一。
我们看看什么情况下选R更好。
1.1 如果你的编程水平是菜鸟级,选R
如果你的编程经验有限,推荐先学R。
对于软件开发新手来说,Python可能不错,但是我认为R更适合数据科学新手。
但是数据科学和软件开发不是同一回事。
解释一下为什么。
这种差异可归结为:数据科学家使用编程语言的方式与软件开发者不一样。对于数据科学新手来说,程序(programs)应该是脚本(scripts),而不应该是软件(software)。
举个例子,我们用R语言处理一个叫Auto数据框(dataframe):
library(ISLR)
data(‘Auto’)
如果对R不熟悉,代码的具体意义可暂时不理会。
数据框是R语言中最常用的数据类型之一,以行列的形式排布,有点类似Excel表格。
在这个Auto数据框中有个weight变量,表示汽车的重量。我们想利用它来创建一个以公斤为单位的新变量weight_kg。
有很多方法可以实现这个任务。最容易想到的方法是:利用for循环遍历weight变量中的值,然后计算出新变量的值。听起来有点麻烦。
其实我们可以利用tidyverse包中已有的mutate函数直接计算出新变量的值:
mutate(Auto, weight_kg=weight*0.45)
再次提示,代码的意义可先不理会。
这个方法避免使用for循环,更简单。事实上,在R中要实现某种功能,只要你知道要用哪个函数和哪个包,实现将会变得非常简单。
在R中,你应该尽量使用已有函数和包来完成相关任务,没必要自己创建工具来处理任务。这意味着你不需要知道很多传统意义上的编程概念。事实上你应该避免使用这些概念,比如:for循环、类、面向对象编程以及其它软件开发概念。
总之,相比Python,由于R的数据处理工具开发得更好且更容易使用,我认为R更适合做数据处理。
其实Python也有很多工具来直接处理数据,比如pandas包,但是Python的包和语法具有‘软件开发’的味道,依赖于一些软件开发概念(像for循环、类和面向对象等等)。比如,当浏览一些Python书籍的时候,你仍会看到介绍for循环、类声明等。对于那些没有软件开发或计算机科学背景的新人来说,这些概念很难被理解。
相反,很多情况下即使没有任何编程经验,你也可以很好地使用R的各种工具。
1.2 对于数据科学任务,R的语法更直观形象
对于数据处理任务,很多时候R的语法会更简单。函数和参数的命名设计也更好,很容易记住和使用。
举个例子,我们将分别用R和Python来删掉Iris数据框中的两个变量(由于R和Python都有Iris数据框,因此我们使用这个数据框)。
我们来看看各自的语法:
Python
import seaborn as sns
import pandas as pd
iris = sns.load_dataset(‘iris’)
iris.drop([‘sepal_length’, ‘species’], axis = 1)
R
library(dplyr)
select(iris, -sepal_length, -species)
为了删除变量,Python中使用了drop函数,而R中使用了select函数。我们来对比这两个函数(都在最后一行代码)的语法。
先讲Python,drop函数命名得很好,容易记住。但是参数设计得很复杂。
第一个参数是包含想要删除变量的列表,Python中用方括 [ ]代表列表。这里你必须要用方括 ,而且变量一定要用引 ’ ‘,要不然代码会运行错误。
对于初学者,经常会忘记使用方括 和引 ,导致代码运行错误,也不知道为啥会出错,很是困惑。当时我学Python就是这种感觉。
再说下drop的第二个参数axis。初学者肯定会困惑,“天啊,啥是axis,它有什么用”,一脸懵逼。
事实上,在学Python的时候,你会碰到很多类似的情况,让初学者很困惑。
我们看看R是怎么处理的。
为了删除变量,R用了dplyr包中的select函数。函数名字取得一般,不如Python中drop。但是参数设计得很好,第一个参数是你想处理数据框;其它参数是你想要删除的变量,前面的负 -表示删除,变量之间用逗 ,隔开,都非常形象。此外这里根本没有涉及drop中所谓的 ‘axis’ 概念。
总之,相比Python,在数据处理方面,R的语法更直观形象,写代码如同写伪代码一样,容易记住、编写和读懂。
1.3 在数据可视化方面,R非常优秀
可视化是选择数据分析软件的一个重要的标准。
除了擅长数据分析外,R的另外一个闪光点就是它的画图能力特别强,几乎可以绘制出所有类型的图。不信的话,你可以Google一下,输入 ‘R visualization’ 关键字。
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
三、精品Python学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
七、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联 大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览212732 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!