Python还是R:哪个是数据科学的更好选择?



未来几年,数据科学将彻底改变这个世界。 数据科学家之间的难题是,哪种编程语言在数据科学中扮演着最重要的角色? 数据科学中使用了许多编程语言,包括R,C ++,Python。

在本博客中,我们将讨论两种重要的编程语言,即Python和R。这将帮助您为下一个数据科学项目选择最合适的语言。

Python是一种开源,灵活, 面向对象且易于使用的编程语言。 它具有庞大的社区基础,并包含一组丰富的库和工具。 实际上,它是每个数据科学家的首选。

另一方面,R是用于统计计算和数据科学的非常有用的编程语言。 它提供了独特技术的作用。 非线性/线性建模,聚类,时间序列分析,经典统计检验和分类技术。

Python的功能

  • 动态类型语言,因此变量是自动定义的。
  • 与其他编程语言相比,更具可读性且使用更少的代码来执行相同的任务。
  • 强类型。 因此,开发人员必须手动转换类型。
  • 一种解释性语言。 这意味着程序无需编译。
  • 灵活,便携式,可以轻松在任何平台上运行。 它具有可伸缩性,可以轻松地与其他第三方软件集成。

数据科学应用程序的R功能

  • 向量可以进行多次计算
  • 统计语言
  • 您无需任何编译器即可运行代码
  • 数据科学支持

在这里,我列出了一些用于区分这两种数据科学编程语言的领域。

1) 数据结构

在数据结构方面,二进制树可以在Python中轻松实现,但是此过程是在R中使用列表类完成的,这是一个很慢的过程。

Python中二进制树的实现如下所示:

首先,创建一个节点类并将任何值分配给该节点。 这将创建一个带有根节点的树。

class Node: def __init__(self, data): self.left = None self.right = None self.data = data def PrintTree(self): print(self.data) root = Node(10) root.PrintTree() 

输出:10

现在,我们需要插入到树中,因此我们在上面添加了一个插入类和相同的节点类。

 class Node: def __init__(self, data): self.left = None self.right = None self.data = data def insert(self, data): # Compare the new value with the parent node if self.data: if data < self.data: if self.left is None: self.left = Node(data) else: self.left.insert(data) elif data > self.data: if self.right is None: self.right = Node(data) else: self.right.insert(data) else: self.data = data # Print the tree def PrintTree(self): if self.left: self.left.PrintTree() print( self.data), if self.right: self.right.PrintTree() # Use the insert method to add nodes root = Node(12) root.insert(6) root.insert(14) root.insert(3) root.PrintTree() 

输出:3 6 12 14

获奖语言: Python

2) 程序语言统一

由于RStudio:R& Tidyverse ,将R的版本更改为两种不同的方言时,将Python的版本从2.7更改为3.x不会对市场造成任何干扰。

获奖语言: Python

3) 元编程和OOP事实

Python编程语言在R中具有一种OOP范例,您可以多次在终端上打印函数。 R即生成代码的代码的元编程功能是神奇的。 因此,它已成为计算机科学家的首选。 尽管函数在两种编程语言中都是对象,但R还是像Python一样重视它。

作为一种功能编程语言,R提供了很好的工具来执行结构良好的代码生成。 在这里,一个简单的函数就是将一个向量作为一个高于阈值的参数和返回元素。

 myFun <- function(vec) { numElements <- length(which(vec > threshold)) numElements } 

对于不同的阈值,我们将编写一个生成所有这些函数的函数,而不是手动重写该函数。 下面,我们显示了产生许多myFun类型函数的函数:

 genMyFuns <- function(thresholds) { ll <- length(thresholds) print("Generating functions:") for(i in 1:ll) { fName <- paste("myFun.", i, sep="") print(fName) assign(fName, eval( substitute( function(vec) { numElements <- length(which(vec > tt)); numElements; }, list(tt=thresholds[i]) ) ), envir=parent.frame() ) } } 

您还可以考虑在R CLI会话上使用数字示例,如下所示:

 > genMyFuns(c(7, 9, 10)) [1] "Generating functions:" [1] "myFun.1" [1] "myFun.2" [1] "myFun.3" > myFun.1(1:20) [1] 13 > myFun.2(1:20) [1] 11 > myFun.3(1:20) [1] 10 > 

获奖语言: R

4) 与C / C ++的接口

为了与C / C ++交互,与Python语言相比,R编程语言具有强大的工具。 R的Rcpp是与C / C ++交互的强大工具之一,其新的ALTREP构想可以进一步提高性能和可用性。 另一方面,Python有工具viz。 power,那不是那么多的力量,但工作相同。 诸如Cython和PyPy之类的Python其他变体可以完全消除对显式C / C ++接口的需要。
获奖语言: R编程

5) 并行计算

两种编程语言都没有为多核计算提供良好的支持。 R带有并行程序包,这不是一个好的解决方法,Python的多处理程序包也不是。 Python具有更好的GPU接口。 但是,支持群集计算的外部库在两种编程语言中都很好。
获胜语言:两者都不选

6)统计问题

R语言是由统计学家为统计学家编写的。 因此,不涉及统计问题。 另一方面,Python专业人士主要从事机器学习,并且对统计问题了解甚少。

R与作为S-PLUS市售的S统计语言有关。 R提供了许多统计函数,即sd(变量),中位数(变量),min(变量),均值(变量),分位数(变量,水平),长度(变量),var(变量)。 T检验用于确定统计差异。 下面是一个示例,如何执行t检验:

> t.test(var1,var2)

Welch两次样本t检验

数据:x1和x2
t = 4.0369,df = 22.343,p值= 0.0005376
替代假设:均值的真实差不等于0
95%置信区间:
2.238967 6.961033
样本估算:
x的平均值,y的平均值
8.733333 4.133333

>

但是,可以如下所示运行经典版本的t检验:

> t.test(var1,var2,var.equal = T)

两次样本t检验

数据:x1和x2
t = 4.0369,df = 28,p值= 0.0003806
替代假设:均值的真实差不等于0
95%置信区间:
2.265883 6.934117
样本估算:
x的平均值,y的平均值
8.733333 4.133333

>

要对配对的数据进行t检验,您需要编写如下代码:

> t.test(var1,var2,成对= T)

配对t检验

数据:x1和x2
t = 4.3246,df = 14,p值= 0.0006995
替代假设:均值的真实差不等于0
95%置信区间:
2.318620 6.881380
样本估算:
差异的均值
4.6

>
获奖语言: R语言

7) AL和ML

随着机器学习和人工智能的到来,Python变得极为重要。 Python提供了大量用于图像识别的微调库,例如AlexNet。 因此,可以轻松开发R版本。 Python强大的库来自制作某些平滑图像的操作,这些操作可以进一步在R's Keras包装器中实现 。 因此,可以轻松开发TensorFlow的纯R版本。 但是,R的用于梯度增强和随机森林的软件包可用性非常出色。
获奖语言: Python

8)图书馆的存在

综合R存档网络(CRAN)拥有超过12,000个软件包,而Python软件包索引( PyPI )具有超过183,000个软件包。 与R相比,PyPI在数据科学上很薄弱。



致胜语言:两者之间的纽带

9) 学习图

当要精通Python时,需要学习很多材料,包括Pandas,NumPy和matplotlib,矩阵类型,而基本图形已经内置R。新手可以通过简单数据在几分钟内轻松学习R编程语言。分析。 但是,Python库对于他进行配置可能很棘手。 但是R包是开箱即用的。

获奖语言: R编程语言

10) 优雅

作为最后一个比较因素,它实际上是最主观的一个。 Python比R编程语言更优雅,因为它在编码时大大减少了括号和花括号的使用,并使开发人员更流畅地使用它。
获奖语言: Python

最后说明:

在数据科学领域,这两种语言正在互相打架。 在某些时候,Python赢得了比赛,而在其他R语言上则取得了胜利。 因此,以上两种用于数据科学的编程语言之间的最终选择取决于以下因素:

->您投资的时间
->您的项目要求
->您的业务目标

感谢您将宝贵的时间用于阅读,我欢迎您的积极反馈。

Source: https://habr.com/ru/post/zh-CN482500/


All Articles