数极客首页

数据科学入门:选Python还是R

数据科学入门:选Python还是R
  • 作者 Brian Ray
  • 编译  Mika
关于
想入门数据科学的新手来说,选择学Python还是R言语
是一个难题,本文对两种言语
中止

了比较

,希望能辅佐

你做出选择。

我是德勤的数据科学家主管,多年来我不时

在运用
Python和R言语
,并且与Python社区密切

协作
了15年。本文是我对这两种言语
的一些个人见地

第三种选择

数据科学入门:选Python还是R

针对这个问题,Studio的首席数据科学家Htley Wickham以为
,比起在二者当选

其一,更好的选择是让两种言语
协作
。因而

,这也是我提到的第三种选择,我在文本最终
部分

会讨论

怎样
比较

R和Python

关于
这两种言语
,有以下几点值得中止

比较

· 历史:

R和Python的展开

历史显然
不同,同时有交错

的部分

· 用户群体:

包含许多复杂的社会学人类学要素

· 性能:

细致
比较

以及为何难以比较

· 第三方支持:

模块、代码库、可视化、存储库、组织和开发环境。

· 用例:

依据

细致

任务和工作类型有不同的选择。

· 能否
能同时运用

在Python中运用
R,在R中运用
Python。

· 预测:

内部测试。

· 企业和个人偏好:

揭晓最终答案。

历史

数据科学入门:选Python还是R

简史:

ABC言语
– > Python 问世(1989年由Guido van Rossum创建

) – > Python 2(2000年) – > Python 3(2008年)

Fortan言语
– > S言语
(贝尔实验室) – > R言语
问世(1991年由Ross Ihaka和Robert Gentleman创建

) – > R 1.0.0(2000年) – > R 3.0.2(2013年)

用户群体

在比较

Python与R的运用
群体时,要留意

数据科学入门:选Python还是R

只需

50%的Python用户在同时运用
R。

假定
运用
R言语
的程序员都用R中止

相关“科学和数字”研讨
。能够

肯定
无论程序员的水平

怎样
,这种统计散布

都是真实。

这里回到第二个问题,有哪些用户群体。整个科学和数字社区包含几个子群体,当中存在一些堆叠

运用
Python或R言语
的子群体:

· 深度学习

· 机器学习

· 高级剖析

· 预测剖析

· 统计

· 探求

数据剖析

· 学术科研

· 大量计算研讨
范畴

固然
每个范畴
简直

都效劳
于特定群体,但在统计和探求

等方面,运用
R言语
更为普遍。在不久之前中止

数据探求

时,比起Python,R言语
花的时间更少,而且运用
Python还需求
花时间中止

装置

这一切都被称为Jupyter Notebooks和Anaconda的推翻
性技术所改动

Jupyter Notebook:增加了在阅读
器中编写Python和R代码的才干

;

Anaconda:能够

轻松装置

和管理Python和R。

往常

,你能够

在友好的环境中启动和运转
Python或R,提供开箱即用的报告和剖析

,这两项技术消弭
了完成任务和选择喜欢言语
间的障碍。Python往常

能以独立于平台的方式打包,并且更快地提供快速简单的剖析

社区中影响言语
选择的另一个要素
是“开源”。不只
仅是开源的库,还有协作社区对开源的影响。讽刺

的是,Tensorflow和GNU Scientific Library等开源软件(分别是Apache和GPL)都与Python和R绑定。固然
运用
R言语
的用户很多,但运用
Python的用户中有很多地道
的Python支持者。另一方面,更多的企业运用
R言语
,特别是那些有统计学背景的。

最终
,关于社区和协作,Github对Python的支持更多。假定

看到最近抢手
的Python包,会发现Tensorflow等项目有超越
3.5万的用户珍藏

。但看到R的抢手
软件包,Shiny、Stan等的珍藏

量则低于2千。

性能

这方面不容易中止

比较

缘由
是需求
测试的指标和状况

太多。很难在任何一个特定硬件上测试。有些操作经过
其中一种言语
优化,而不是另一种。

循环

在此之前让我们想想,怎样
比较

Python与R。你真的想在R言语
写很多循环吗?毕竟这两种言语
的设计企图
不太相同。

{ "cells": [  {   "cell_type": "code",   "execution_count": 1,   "metadata": {},   "outputs": [],   "source": [    "import numpy as npn",    "%load_ext rpy2.ipython"   ]  },  {   "cell_type": "code",   "execution_count": 2,   "metadata": {},   "outputs": [],   "source": [    "def do_loop(u1):",    "",    "    # Initialize `usq`",    "    usq = {}",    "",    "    for i in range(100):",    "      # i-th element of `u1` squared into `i`-th position of `usq`",    "      usq[i] = u1[i] blog.sql fenxike.sql u1[i]"   ]  },  {   "cell_type": "code",   "execution_count": 3,   "metadata": {},   "outputs": [],   "source": [    "%%Rn",    "do_loop <- function(u1) {",    "    ",    "    # Initialize `usq`",    "    usq <- 0n",    "",    "    for(i in 1:100) {",    "      # i-th element of `u1` squared into `i`-th position of `usq`",    "      usq[i] <- u1[i]*u1[i]",    "    }",    "",    "}"   ]  },  {   "cell_type": "code",   "execution_count": 4,   "metadata": {},   "outputs": [    {     "name": "stdout",     "output_type": "stream",     "text": [      "1.58 ms ± 42.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)"     ]    }   ],   "source": [    "%%timeit - 1000n",    "%%Rn",    "u1 <- rnorm(100)",    "do_loop(u1)"   ]  },  {   "cell_type": "code",   "execution_count": 5,   "metadata": {},   "outputs": [    {     "name": "stdout",     "output_type": "stream",     "text": [      "36.9 µs ± 5.99 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)"     ]    }   ],   "source": [    "%%timeit - 1000n",    "u1  = np.random.randn(100)",    "do_loop(u1)"   ]  } ], "metadata": {  "kernelspec": {   "display_name": "Python 3",   "language": "python",   "name": "python3"  },  "language_info": {   "codemirror_mode": {    "name": "ipython",    "version": 3   },   "file_extension": ".py",   "mimetype": "text/x-python",   "name": "python",   "nbconvert_exporter": "python",   "pygments_lexer": "ipython3",   "version": "3.6.3"  } }, "nbformat": 4, "nbformat_minor": 2 }

Python为0.000037秒,R为0.00158秒

包括加载时间和在命令行上运转
:R需求
0.238秒,Python需求
0.147秒。强调,这并不是科学严谨的测试。

测试证明,Python的运转
速度显然
加快。通常这并没有太大影响。

除了运转
速度外,关于
数据科学家而言哪种性能更重要?两种言语
之所以受欢送

是由于
它们能被用作命令言语
。例如,在运用
Python时大多时分
我们都很依赖Pandas。这触及
到每种言语
中模块和库,以及其执行方式。

第三方支持

Python有PyPI,R言语
有CRAN,两者都有Anaconda。

CRAN运用
内置的install.packages命令。目前,CRAN上有大约1.2万个包。其中超越
1/2的包都能用于数据科学。

PyPi中包的数据量
超越
前者的10倍,约有14.1万个包。特地
用于科学工程的有3700个。其中有些也能够

用于科学,但没有被标志

在两者中都有重复

的状况

。当搜索“随机森林”时,PyPi中能够

得到170个项目,但这些包并不相同。

固然

Python包的数据量
是R的10倍,但数据科学相关的包的数据量
大致相同。

运转
速度

比较

DataFrames和Pandas更有意义。

我们中止

了一项实验:比较

针对复杂探求

任务的执行时间,结果如下:

数据科学入门:选Python还是R

在大多数任务中Python运转
速度更快。

来源:http://nbviewer.jupyter.org/gist/brianray/4ce15234e6ac2975b335c8d90a4b6882

能够

看到,Python + Pandas比原生的R言语
DataFrames更快。留意
,这并不意味着Python运转
更快,Pandas 是基于Numpy用C言语
编写的。

可视化

数据科学入门:选Python还是R

这里将ggplot2与matplotlib中止

比较

matplotlib是由John D. Hunter编写的,他是我在Python社区中最敬重的人之一,他也是教会我运用
Python的人。

Matplotlib固然
不易学习但能中止

定制和扩展。ggplot难以中止

定制,有些人以为
它更难学。

假定

你喜欢漂亮的图表,而且无需自定义,那么R是不错的选择。假定

你要做更多的事情,那么Matplotlib致使

交互式散景都不错。同样,R的ShinnyR能够

增加交互性。

能否
能同时运用

可能你会问,为什么不能同时运用
Python和R言语
?

以下状况

你能够

同时运用
这两种言语

· 公司或组织允许;

· 两种都能在你的编程环境中轻松设置和维护;

· 你的代码不需求
进入另一个系统;

· 不会给协作
的人带来省事

和干扰

一同
运用
两种言语
的办法

是:

· Python提供给

R的包:如rpy2、pyRserve、Rpython等;

· R也有相对的包:rPython、PythonInR、reticulate、rJython,SnakeCharmR、XRPython

· 运用
Jupyter,同时运用
两者,例子如下:

数据科学入门:选Python还是R

之后能够

传送
pandas的数据框,接着经过
rpy2自动转换为R的数据框,并用“-i df”转换:

数据科学入门:选Python还是R

来源:http://nbviewer.jupyter.org/gist/brianray/734bd54f468d9a6db9171b2cfc98405a

预测

Kaggle上有人对开发者运用
R还是Python写了一个Kernel。他依据

数据发现以下有趣的结果:

数据科学入门:选Python还是R

· 假定

你打算明年转向Linux,则更可能是Python用户;

· 假定

你研讨
统计数据,则更可能运用
R;假定

研讨
计算机科学,则更可能运用
Python;

· 假定

你还年轻(18-24岁),则更可能是Python用户;

· 假定

你参与
编程竞赛
,则更可能是Python用户;

· 假定

你明年想运用
Android,则更可能是Python用户;

· 假定

你想在明年学习SQL,则更可能是R用户;

· 假定

你运用
MS office,则更可能是R用户;

· 假定

你想在明年运用
Rasperry Pi,则更可能是Python用户;

· 假定

你是全日制学生,则更可能是Python用户;

· 假定

你运用
的矫捷
办法

(Agile methodology),则更可能是Python用户;

· 假定

看待

人工智能,比起兴奋你更持担忧
态度,则更可能是R用户。

企业和个人偏好

当我与Googler和Stack Overflow的大神级人物Alex Martelli交流时,他向我解释了为什么Google最开端
只官方支持少数几种言语
。即便

是在Google相对开发的环境中,也存在一些限制和偏好,其他企业也是如此。

除了企业偏好,企业中第一个运用
某种言语
的人也会起到决议
性作用。第一个在德勤运用
R的人他目前仍在公司工作,目前担任首席数据科学家。我的倡议

是,选择你喜欢的言语
,酷爱

你选择的言语
,起到指导
作用,并酷爱

你的事业。

当你在研讨
某些重要的内容时,犯错是难以避免

的。但是
,每个精心设计的数据科学项目都为数据科学家留有一些空间,让他们中止

实验和学习。重要的是坚持
开放的心态,拥抱多样性。

最终
就我个人而言,我主要运用
Python,之后我等候

学习更多R的内容。

原文链接:

https://blog.usejournal.com/python-vs-and-r-for-data-science-833b48ccc91d

发表评论

评论已关闭。

相关文章