左手是“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'就能保留原有的样子 ...
随机推荐
- C# .NET 按ASCII 从小到大排序
//C#的SortedDictionary<string,string>集合对key不是按照ascii码排序的因为他没有区分大小写,这就是个差别. 如果参数名中间有大写,小写,数字,Sor ...
- stm32之CMSIS标准、库目录、GPIO
一.CMSIS标准 ST公司的stm32采用的是cortex-m3内核,内核是整个微处理器的CPU.该内核是ARM公司设计的一种处理器体系架构.内核与外设的关系就像PC上的CPU与硬盘.主板.内存等的 ...
- 关于eth0 eth0:1 和eth0.1关系介绍
eth0 eth0:1 和eth0.1三者的关系对应于物理网卡.子网卡.虚拟VLAN网卡的关系:物理网卡:物理网卡这里指的是服务器上实际的网络接口设备,这里我服务器上双网卡,在系统中看到的2个物理网卡 ...
- bootloader介绍
Bootloader是系统加电后运行的第一段软件代码,主要任务就是将内核映像从硬盘读到RAM中,然后跳转到内核的入口点去运行,也即开始启动操作系统. 简单的说,Bootloader就是在操作系统运行内 ...
- Android Studio Gradle依赖冲突
版本冲突 Gradle提供了两种解决版本冲突的策略:Newest和Fail.默认策略是Newest,配置Fail模式: configurations.all { resolutionStrategy. ...
- java.lang.Byte 类源码浅析
Byte 类字节,属于Number. public final class Byte extends Number implements Comparable<Byte> { /** * ...
- [STM32F103]外部中断
① 初始化IO口为输入. GPIO_Init(); ② 开启IO口复用时钟. RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); ③ 设置IO口与中 ...
- winserver2012 下安装 sqlserver2008
sqlserver2008 安装要求 winserver2012 必须装 .netframework3.5. 但是 winserver2012下,安装 .netframework3.5 ,必须要 wi ...
- 在VS2015中用C++编写可被C#调用的DLL
VS2015用C++创建动态库DLL步骤如下: (1)启动VS2015-->文件-->新建-->项目,按图二进行选择,选择Win32项目,弹出创建窗口,如第二张图.注意.net版本根 ...
- nginx+ftp服务器搭建简易文件服务器
在做一些小项目和学习项目过程中,学习了通过 nginx 和 FTP 搭建小型文件服务器,记录下: 1.环境 电脑:acer 操作系统:windows 10 ftp服务器 2.下载 nginx, 通过双 ...