① 数据科学入门丨选python还是R
数据科学入门丨选Python还是R
对于想入门数据科学的新手来说,选择学Python还是R语言是一个难题,本文对两种语言进行了比较,希望能帮助你做出选择。
我是德勤的数据科学家主管,多年来我一直在使用Python和R语言,并且与Python社区密切合作了15年。本文是我对这两种语言的一些个人看法。
第三种选择
针对这个问题,Studio的首席数据科学家Htley Wickham认为,比起在二者中选其一,更好的选择是让两种语言合作。因此,这也是我提到的第三种选择,我在文本最后部分会探讨。
如何比较R和Python
对于这两种语言,有以下几点值得进行比较:
· 历史:
R和Python的发展历史明显不同,同时有交错的部分。
· 用户群体:
包含许多复杂的社会学人类学因素。
· 性能:
详细比较以及为何难以比较。
· 第三方支持:
模块、代码库、可视化、存储库、组织和开发环境。
· 用例:
根据具体任务和工作类型有不同的选择。
· 是否能同时使用:
在Python中使用R,在R中使用Python。
· 预测:
内部测试。
· 企业和个人偏好:
揭晓最终答案。
历史
简史:
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的使用群体时,要注意:
只有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):n",
"n",
" # Initialize `usq`n",
" usq = {}n",
"n",
" for i in range(100):n",
" # i-th element of `u1` squared into `i`-th position of `usq`n",
" usq[i] = u1[i] * u1[i]n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"%%Rn",
"do_loop <- function(u1) {n",
" n",
" # Initialize `usq`n",
" usq <- 0n",
"n",
" for(i in 1:100) {n",
" # i-th element of `u1` squared into `i`-th position of `usq`n",
" usq[i] <- u1[i]*u1[i]n",
" }n",
"n",
"}"
]
},
{
"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)n"
]
}
],
"source": [
"%%timeit -n 1000n",
"%%Rn",
"u1 <- rnorm(100)n",
"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)n"
]
}
],
"source": [
"%%timeit -n 1000n",
"u1 = np.random.randn(100)n",
"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运行速度更快。
http://nbviewer.jupyter.org/gist/brianray/
可以看到,Python + Pandas比原生的R语言DataFrames更快。注意,这并不意味着Python运行更快,Pandas 是基于Numpy用C语言编写的。
可视化
这里将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,同时使用两者,例子如下:
之后可以传递pandas的数据框,接着通过rpy2自动转换为R的数据框,并用“-i df”转换:
http://nbviewer.jupyter.org/gist/brianray/
预测
Kaggle上有人对开发者使用R还是Python写了一个Kernel。他根据数据发现以下有趣的结果:
· 如果你打算明年转向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的内容。
② r和python哪个容易入门
如果只想学一个语言的话,还是推荐python。从我身边人的情况来看,很多学了很多R的人最后都选择再去多学一门python,包括我自己也是,而python很厉害的人却没听说过会来学R。(推荐学习:Python视频教程)
我其实学python是冲着爬虫来的,然后顺便学了一下python的数据分析。让我感触最深的是python的规整统一,语法优雅。比如各种机器学习算法在python中使用方法完全是同一个套路,训练预测检验都是一样的方法,这极大地减少了学习的成本。在这点上R就显得很乱,R包虽然很多很全,但是重复太多,调用方法都不一样,学习成本骤然上升。
不过R也有python无法比拟的优势。总结起来就是R更方便。
第一,绘图。
python的绘图基本上都是基于matplotpb库,其他库很多都和这个关联。这个库的绘图灵活性非常强大不可否认,即想调哪里都可以做到,但是每次画一个简单的图形都要写一大堆代码就很麻烦。
第二,数据分析函数的调用。
因为数据科学只是python的一个分支,所以数据科学的数据类型不是python内置的类型,而是放在几个库里面的,每次使用都要加载库,加载要使用的函数,这在我看来是比较麻烦的。
总结起来,python语法的设计更加规范,用户可以更自由地实现自己的想法,但是它帮你实现的东西会比R少一些。因为更加灵活所以只学一个语言就推荐这个,否则学R语言的话,有时候会觉得不够用就很难受。
用一个比喻来说明就是,python好比给了你一把非常好的鱼竿,你可以钓取任何你想要吃的鱼(但是要你自己钓),R好比给了你一把没那么好用的鱼竿,还附加吃不完的鲤鱼、鲫鱼,你可以只吃这两种鱼,但是你想吃草鱼就要费比较大的功夫才能吃到。为了防止误导,加入C语言的对比,C语言就是鱼竿也要你自己造。
更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于r和python哪个容易入门的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!
③ 数据分析一定要学python吗
不一定,数据分析很灵活,没有你想得那么古板。
④ python和r语言哪个入门容易
1、语言的定义:
Python是一种跨平台的计算机程序设计语言。
是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
2、适用群体:
R语言在学术研究和调查工作中使用的比较多,逐渐延伸到企业商业界。使用人群不一样需要计算机背景,统计、金融、经济、核电、环境、医疗、物流管理乃至人文学科,都有R语言立足之地;Python相比R非标准的代码,Python作为出了名的语法简洁工具,对于一些稍有编程基础的人来说格外友好,可以减少在编程进程中的磕绊,没有任何基础的编程小白一样可以上手Python,适用于金融、医疗、管理等各行各业。
3、学习难度:
刚开始学习R语言的时候了解最基本知识和语言逻辑,入门不难,如果数理统计基础好的话学起来更容易,相反,如果没有数理背景,学习起来会增加难度;Python看重可读性和易用性,学习难度比较平缓,对于初级小白而言,十分友好,可就业方向也有很多。
4、就业方向:
R场景:数据探索、统计分析、数据可视化;岗位:数据分析师、数据科学家、投资分析师、税务人员、管理人员、科研人员等。
Python场景:数据分析、网络爬虫、系统编程、图形处理、文本处理、数据库编程、网络编程、Web编程、数据库连接、人工智能、机器学习等;岗位:数据架构师、数据分析师、数据工程师、数据科学家、程序开发员等。
⑤ python和r语言哪个好
单就数据分析对比,我认为R的优势有:
1、学习先易后难,不会把小白们吓掉;
2、数据科学的包特别多
3、可视化特别吊
R的缺点也不少:
1、R经常更新,更新后经常不支持之前你安装的包;我电脑里安装了10+个R的版本,不停的切换
2、R语言的包、函数名起的很随意,看名字不知道是干什么用的,记不起名字如何让小白使用啊。
3、R语言社区人少,遇到问题你只能自己解决
4、即使有RStudio,写代码还是不方便
下面再说下python,优点:
1、是一门看的懂的,说人话的语言。库名、函数名都很好理解记忆,而且你看别人写的代码基本知道这代码的意思,不信你试试。
2、数据获取占优势,数据分析第一步是数据获取,现在人文社科很多数据需要网上抓取,不过就抓数据而言,python更占优势。各种教程,代码,网上一大片。
3、社区人数特别多,基本你遇到的问题都能找到
python的缺点:
1、学习起来,开头很难,学习曲线与R正好相反。
2、公平起见,我还是写上,python的数据分析库不如R多
3、可视化不如R
综合下,建议大家学习python,语言通俗易懂,功能强大,越来越简单。
⑥ R语言与Python是什么
都是程序计算机语言。
Python入门简单,而R则相对比较难一些。R做文本挖掘现在还有点弱,当然优点在于函数都给你写好了,你只需要知道参数的形式就行了,有时候即使参数形式不对,R也能"智能地”帮你适应。这种简单的软件适合想要专注于业务的人。
Python几乎都可以做,函数比R多,比R快。它是一门语言,R更像是一种软件,所以python更能开发出flexible的算法。
相关介绍
Python和R本身在数据分析和数据挖掘方面都有比较专业和全面的模块,很多常用的功能,比如矩阵运算、向量运算等都有比较高级的用法,所以使用起来产出比大。
这两门语言对于平台方面适用性比较广,linux、window都可以使用,并且代码可移植性还算不错的。对于学数理统计的人来说,应该大多用过MATLAB以及mintab等工具,Python和R比较贴近这些常用的数学工具,使用起来有种亲切感。
⑦ 知乎:SQL、R语言、python对没有计算机背景的人来说先学习哪个比较好
你是想做数据分析对吧?
建议啊,先学R,R能应付很多统计问题了
再去学python,python语法当然了必须先掌握,这个很简单,然后就是python有两个
跟数据分析密切相关的包,如果你想做数据分析,请把重点放在两个包上
再学sql吧,毕竟单纯的学sql没有什么意义,因为什么也做不了
sql 建议先学sql server,有了python的语法基础学sqlserver很简单,当然没有基础也能学,只是有一门语言基础学起来更容易
学完sql server 再学oracle,oracle一定要学,其他数据库根据需求来学,比如Nosql就非常好