左手是“Python”的身体,右手是“R”的灵魂,你爱哪个?
来源商业新知网,原标题:你爱 “Python”的身体,还是“R”的灵魂?
数据科学界有三大宝: Python、SAS和R,不过像SAS这种高端物种,不是我们这些平民能供养得起的啊。
根据 IEEE Spectrum的最新排名,R和Python仍然是最热门的数据科学编程语言。本文将从数据可视化、建模库、易学性和社区支持等四方面入手,比较R和Python的语言性能。

数据可视化
数据科学的一个重要部分是交流。分析成果需要以一种有效、易懂的方式展示出来。因此,任何用于数据科学的语言或软件包都应该具有良好的数据可视化工具。良好的数据可视化具有清晰性。无论模型有多复杂,都会用一种简单明了的方法来说明结果,即使是外行人也能理解。
Python
Python以其大量的库而闻名。有很多库可以用于绘图和可视化。最热门的库是matplotlib和seaborn。matplotlib库改编自MATLAB,具有相似的特性和风格。matplotlib库是一个非常强大的可视化工具,内置了各种功能,特别是在与其他Python数据科学库pandas和numpy很好地协作时,它可以非常容易地用于绘制简单的plot函数。
虽然matplotlib可以生成大量的图形和图表,但它缺乏简单性。最麻烦的方面是调整plot函数的大小:如果存在很多变量,那么你可能会花费很多功夫来试图把它们整齐地放在一个plot函数中。另一个大问题是创建subplot函数,同样,将它们都调整到一个图中可能会变得很复杂。
现在,基于matplotlib的seaborn包含了更多的美学图形和plot函数。这个库无疑是对matplotlib陈旧风格的改进,但它仍然存在同样的基本问题:创建图形可能非常复杂。这也是Python未来的改进方向。
R
有许多库可以用于R的数据可视化,其中ggplot2在使用和广泛度方面首屈一指。该库使用图形哲学语法,使用图层在绘图上绘制对象。层之间通常是相互连接的,并且可以共享许多共同的特性。这些层让你可以用很少的代码创建非常复杂的图。该库允许绘制摘要函数。综上,ggplot2比matplotlib更加灵活简洁,因此在这个领域R优势更为明显。
但是,值得注意的是,Python包含了一个与R中原始ggplot2功能类似的ggplot库。

建模库
数据科学需要使用许多算法。这些复杂的数学方法需要稳健的计算。重新编写算法代码对数据科学家而言相当费时,他们需要具有内置建模支持的语言。Python和R刚好满足这一点。
Python
Python拥有大量的机器学习库,包括scikit-learn、XGboost、TensorFlow、Keras和PyTorch等。Python也有pandas,它可以兼容表格形式的数据。pandas库使处理csv或基于excel的数据变得非常容易。除此之外,Python还有很优秀的科学软件包,比如numpy。numpy可以帮助你瞬间完成复杂的数学计算,比如矩阵运算。所有这些包组合在一起,使Python成为一个适用于硬核建模的强大工具。
R
和Python一样,R也有大量的库——大约10000个。其中应用最广泛的是mice,rpart, party和caret。这些包将从预建模阶段到后模型/优化阶段给予你帮助。
这些库几乎可以解决所有的数据问题。但相比之下,Python缺乏统计非线性回归(除了简单的曲线拟合)和混合效应模型。另一方面,R缺乏Python所提供的速度,尤其是在处理大量数据的时候。

易学性
市场对数据分析和处理人员的渴求度相当高。许多人都希望加入数据科学的大潮,其中很多人几乎没有编程经验。因此,在比较两种语言时,需要考虑其是否简单好学易上手。
Python
Python设计于1989年,其理念是强调代码的可读性和使编程变得简单或简洁,Python的设计者显然做到了,因为这种语言非常容易学习。虽然Python的语法灵感来自于C,但与C不同的是,它并不复杂。因此,Python作为初学者的语言学习首选,任何人都可以在相对较短的时间内学会它。
R
R语言也并不难学。它比c++或JavaScript等许多语言都要简单。与Python一样,R的大部分语法都是基于C的,但与Python不同的是,R最初是专门为统计学家和科学家设计的,因此门槛较高。

社区支持
作为一名数据科学家,需要经常解决一些数据难题。在难以找到相关的库或包解决问题的情况下,可以在语言的官方文档或在线社区论坛中搜索,从而获得良好的社区支持。
这两种语言都有活跃的Stackoverflow成员,并且都有一个活跃的邮件列表(在这个列表中,你可以轻松地向专家询问解决方案)。R有在线的R文档,可以在其中找到关于某些函数和函数输入的信息。大多数Python库,比如pandas和scikit-learn,都有自己的官方在线文档来解释每个库。
这两种语言都有大量的用户基础,二者都有非常活跃的支持社区。不难看出,两者在这方面似乎是平等的。

结论
R还是Python?无疑,这两种都是很优秀的语言。如果追求简单上手,可以选择Python,如果想轻松创建视觉效果,那么R语言是首选。
左手是“Python”的身体,右手是“R”的灵魂,你爱哪个?的更多相关文章
- Python计算身体质量指数BMI
使用Python计算身体质量指数BMI 运行结果如下: 源代码: 1 ''' 2 3. 利用函数思想,将"身体质量指数BMI"源程序封装成为一个函数并调用. 3 :param he ...
- 迷宫问题python实现(靠右手摸墙)
大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang 这是大二时候的数学模型毕业课程设计,我选择了自己研究盲人穿越迷宫的问题.当然后来再在网上查了这个问 ...
- 一篇搞懂python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)
关于文件操作的几种常用方式,网上已有很多解说,内容很丰富,但也因此有些杂乱复杂.今天,我就以我个人的学习经验写一篇详细又易懂的总结文章,希望大家看完之后会有所收获. 一.核心功能 ‘r’ ...
- Python换行符问题:\r\n还是\n?
今天写一个Python脚本去读取一个txt文件时,发现一个很有趣的现象: 如果这个文件是用atom编辑器写的,发现换行符是'\r'.这样一来去逐行读取数据就失效了,因为用open函数 去打开该文件re ...
- python中字符串前的r什么意思
Python中,u表示unicode string,表示使用unicode进行编码,没有u表示byte string,类型是str,在没有声明编码方式时,默认ASCI编码.如果要指定编码方式,可在文件 ...
- python中的\n、\r与\b
python中使用print函数,有时候会使用end参数来控制字符输出效果,这时候\n.\r与\b就派上用场了. \n 代表换行,也就是从本行换到下一行 \r 代表回车,也就是回到本行最开始的位置,从 ...
- Python 字符串前面加u,r,b,f的含义
1.字符串前加 u 例:u"我是含有中文字符组成的字符串." 作用: 后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时 ...
- python 中 \n 和转义r的作用和\r的实际应用
我们先看看这张转义字符图: 1. 知识储备 \r 表示将光标的位置回退到本行的开头位置 \b 表示将光标的位置回退一位 在 python 语言中, 使用 print 打印输出时,默认是会进行换行的.如 ...
- python学习之 字符串前'r'的用法
在打开文件的时候open(r'c:\....') 加r和不加''r是有区别的 'r'是防止字符转义的 如果路径中出现'\t'的话 不加r的话\t就会被转义 而加了'r'之后'\t'就能保留原有的样子 ...
随机推荐
- Windows 10的最新版1803版本ISO下载
Windows 10推出已经有几年时间了,笔者一直在用这个新版本.据说Windows 10以后只会推出新的更新,而不会有新的操作系统推出,所以Windows 10的更新就显得重要了.这次给大家推荐一个 ...
- os常用模块,json,pickle,shelve模块,正则表达式(实现运算符分离),logging模块,配置模块,路径叠加,哈希算法
一.os常用模块 显示当前工作目录 print(os.getcwd()) 返回上一层目录 os.chdir("..") 创建文件包 os.makedirs('python2/bin ...
- PHP安装Eclipse与使用
PHP有非常多相当不错的开发工具,如Zend Studio.NetBeans.phpdesigner等,但对于习惯Java编程的程序员们来说,最经常使用的还要属Eclipse. 那么Eclipse能用 ...
- DB2锁与隔离级别
数据库管理器支持三种一般类别的锁定: 共享(S) 挂起 S 锁定之后,并发应用程序进程只能对数据执行只读操作. 更新(U) 挂起 U 锁定之后,如果并发应用程序进程未声明它们要更新行,那么它们只能对数 ...
- promise规范之部分总结
1. promise构造函数中的reject和resolve是微任务, 即先执行resolve后的代码,再执行之前通过then注册的代码 2. 对于状态已变更的promise来说,比如promiseA ...
- 【转】Python 之 元类
原文链接: https://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python http://python.jo ...
- Anaconda安装及配置
简介 Anaconda(官方网站)指的是一个开源的Python发行版本,可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本.Anaconda包含了conda.Python在内的超过18 ...
- 刘志梅201771010115.《面向对象程序设计(java)》第十五周学习总结
实验十五 GUI编程练习与应用程序部署 实验时间 2018-12-6 1.实验目的与要求 (1)一个JAR文件既可以包含类文件,也可以包含诸如图像和声音这些其他类型的文件. 创建一个新的JAR文件应 ...
- solidworks的工程图模板文件和图纸格式文件
工程图模板文件:drwdot,这个文件是在新建工程图的时候,可以选择的,如下. 图纸格式文件:slddrt,这个文件是进入工程图环境,编辑[图纸属性]的时候,可以选择的.如下. 怎么定制上述两种文件? ...
- tensorflow学习001——MNIST
1.MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片 数据集被分成两部分:60000行的训练数据集(mnist.train)和10000行的测试数据集(mnist.test). 这样的 ...