从 R 迁移到 Python 过程中你需要知道的几个软件库

## 为什么要用 Python 呢?

我喜欢用 Python 来处理机器学习问题的一个重要原因是 Python 吸取了 R 社区的优点,同时还将其进行了优化打包。我一直认为编程语言的能力取决于它的软件库,因此本文将着重介绍我经常使用的一些关于机器学习算法的 R 包和 Python 中的替代包。

## glm, knn, randomForest, e1071 -> scikit-learn

![](    http://static.datartisan.com/upload/attachment/2017/01/0YvJIXcB.png)

R 语言的一个缺点是每个机器学习算法都有一个相应的软件包,这大大提升了用户的学习成本。Python 中的 `scikit-learn` 软件包则完美地解决了这个问题,`scikit-learn` 为许多常用的机器学习算法提供了一套相同的 API 接口。利用这个软件包,我们仅需要一行代码就可以将 LogistiRegression 模型切换成 GradientBoostingMachines 模型。

## reshape/reshape2, plyr/dplyr -> pandas

![](http://static.datartisan.com/upload/attachment/2017/01/MHmKsbKO.png)

我在之前的[一篇文章](http://blog.yhat.com/posts/R-and-pandas-and-what-ive-learned-about-each.html)中介绍了 `pandas` 库。`pandas` 吸取了 R 语言中数据清洗功能的优点并将其引入到 Python 中。该库中实现了数据框的功能和其他的一些常用操作方法,它基本包含了 `reshape/reshape2` 和 `plyr/dplyr` 中的精华之处。

## ggplot2 -> ggplot + seaborn + bokeh

![](http://static.datartisan.com/upload/attachment/2017/01/YEZe4Oai.png)

在绘图方面,R 语言一直做得比 Python 好。即便如此,Python 的绘图功能已经趋于成熟了,如果你喜欢 ggplot 风格的代码,你可以尝试 Yhat 开发的 [ggplot
](https://github.com/yhat/ggplot);如果你倾向于绘制统计图,那么你可以使用 `seaborn`;如果你想体验一些更高级的功能,那么你可以尝试下 `bokeh`。

## stringr -> nothing

![](http://static.datartisan.com/upload/attachment/2017/01/g8QNsOGs.png)

R 语言自带的字符串操作函数非常难用,每次当我需要处理字符串时,我都会做以下两件事:

- 向大神 Hadley Wickham 表示感谢
- 导入 `stringr`

`stringr` 绝对是一个大救星,该软件包非常友好,我们可以轻易地安装并利用它快捷地处理字符串数据。但是对于 Python 来说,它本身就能够非常快速地处理字符串数据,所以我们不需要类似于 `stringr` 的第三方软件包!Python 中拥有正则表达式库 `re`,和一个内置的字符串软件包 `string`。

## RStudio -> Rodeo

![](http://static.datartisan.com/upload/attachment/2017/01/cWhc0nEY.png)

对于许多用户来说,`RStudio` 是 R 语言中一款非常友好的编辑器。对于 Python 来说,以前可能没有比较好用的编辑器,但现在情况已经不一样了。我们在一年前就发布了 Rodeo 的第一个版本,并在一个月前发布了适用于 Windows, OSX 和 Linux 的 2.0 版本。

## Knitr -> Jupyter

![](http://static.datartisan.com/upload/attachment/2017/01/xsamci7F.png)

在 R 语言中,我们可以利用 `knitr` 来创建可重复的可视化分析报告,RStudio 中很早就包含了这个功能。在 Python 中,最相近的软件库是 `Jupyter`。Jupyter notebooks 为多种编程语言提供了一个创建可重复的可视化分析报告的交互式环境。

## sqldf -> pandasql

`sqldf` 是 SQL 用户在 R 中轻松操作数据的一个好方法。在我刚开始喜欢使用 R 语言的时候,我经常利用 `sqldf` 来处理数据。据我所知,Yhat 开发了一个类似的 Python 软件库,`pandasql`。这两个软件库拥有同样的功能:利用 SQL 语句来操作数据框并返回相应的数据框。

![](http://static.datartisan.com/upload/attachment/2016/05/xKM5xlV4.png)

---

原文链接:http://blog.yhat.com/posts/moving-from-r-to-python.html

原文作者:Yhat

译者:Fibears 

---

由 Editor 于 2017 年 01 月 06 日 发布在 数据科学 栏目