reticulate包|数据科学者的福音

简介: 如果你还在纠结:学数据科学到底用 python 还是 R 好?现在我的回答是:大可不必。现在两者的变量可以相互调用了。你可以用 R 做数据处理(tidyverse),可视化(ggplot2),用 python 做开发。具体可参考该文章:R Vs Python: What’s the Difference?[1]

{B}P_~(8~8BBD%CFA0G$MIK.png


前言


如果你还在纠结:学数据科学到底用 python 还是 R 好?现在我的回答是:大可不必。现在两者的变量可以相互调用了。你可以用 R 做数据处理(tidyverse),可视化(ggplot2),用 python 做开发。具体可参考该文章:R Vs Python: What’s the Difference?[1]

这一切有它就行了——reticulate 包

reticulate 包涵盖了用于 Python 和 R 之间协同操作的全套工具,在 R 和 Rstudio 中均可使用,主要包括:

1)在 R 中支持多种方式调用 Python。包括 R Markdown、加载 Python 脚本、导入 Python 模块以及在 R 会话中交互式地使用 Python。

2)实现 R 和 Python 对象之间的转换(例如 R 和 Python 数据框、R 矩阵与 NumPy 数组之间)。

在 R 会话中嵌入了 Python 会话,从而实现了无缝的、高性能的互操作性。如果你是使用 Python 进行某些工作的 R 开发人员或使用两种语言的数据科学团队的成员,那么 reticulate 包可以极大地简化你的工作流程!官方资料可见:reticulate 网站[2]


本文框架


`RQ3NT@HITJNU2]HFFYB65B.png


前期准备

安装 reticulate 包

可以直接安装,并进行加载,非常方便。

install.packages("reticulate")
library("reticulate")


下载 python 库

假设我们想用 pandas 库,但是有没有安装,那么一种方法是可以在 R 引擎下运行以下代码。可以下载 python 第三方库,也可以查看是否安装成功等其他操作。

py_install("pandas") #下载scipy库
py_module_available("pandas") #查看是否安装成功
#repl_python()# 查看python路径
#use_python("D:/anaconda/python.exe") #更换python路径


导入 python 库

安装完第三方库,就可以将其进行导入了,这里也是在 R 引擎下进行。

pd <- import("pandas")

可以发现,这与 pthon 代码不同的是:

  • import("os)代替了import os
  • $代替了.
  • <- 代替了 =


常用操作


reticulate 包含一个用于 R Markdown 的 Python 引擎,具有以下功能,具体可见reticulate: R interface to Python[3]

1)可在 R 会话中嵌入的单个 Python 会话中,运行 Python 块。同时 Python 块之间的共享变量/状态。

2)可打印 Python 输出,包括 matplotlib 的图形输出。

3)可使用 py 对象访问 R 中 Python 块中创建的对象。

4)使用 r 对象从 Python 中访问在 R 块中创建的对象。


作图

可以直接用 python 引擎绘图。

import numpy as np 
import matplotlib.pyplot as plt 
# 计算正弦曲线上点的 x 和 y 坐标
x = np.arange(0,  3  * np.pi,  0.1) 
y = np.sin(x)
plt.title("sine wave form")  # 使用 matplotlib 来绘制点
plt.plot(x, y) 
plt.show()

image.gif5[N$Y5@F_7RN@5C%$XGH5O1.png


读取文件

python 怎么读取,这里也可以怎么读取,基本和在 jupter notebook 中是一样的。下面读取下 csv 格式的数据表。

import pandas as pd
df = pd.read_csv("test.csv", encoding="gbk")
df.head()

image.gif

返回的 df 是 Python 对象,我们可以看到表格不好看,这是 R 中的 Python 对象。


在 R 代码块中调用 Python 变量


刚刚讲的都是在 Rmakdown 中运行 Python 代码块,并不是在 R 代码块中运行 Python 代码或者调用 Python 变量,现在我们试试在 R 代码块中调用 Python 变量。


py$python 变量名

R 代码块中调用 Python 方法 py$python 变量名

  • py 相当于 Python 中的对象
  • $ 相当于 Python 中的
  • python_variable_name 是 Python 代码块中的变量名

比如在上文中 Python 的变量 df,在 R 中调用

```{r}
py$df

image.gif

现在调用 Python 对象 df 时,R 会默认将其转为 R 对象,所以内容一样,样式似乎变好看了。


source_python()

使用 reticulate 包中的 source_python('py 文件路径')可以导入 py 文件中的变量,这样就可以在 R 代码块中使用外部变量。例如我在 data.py 中准备 A 和 B 两个字符串

A = '我是庄闪闪,'B = '来自浙江温州'

在 R 代码块中运行 data.py

```{r}library(reticulate)
source_python("data.py")
paste0(A, B)
#我是庄闪闪,来自浙江温州


py_run_file()

在 R 代码块中运行项目文件夹中的 test.py 文件,可使用以下代码

library(reticulate)
py_run_file("test.py")


数据类型对比

4E(WR2(D(YMAL}E9ZY7TP]U.png

目录
相关文章
|
6月前
|
机器学习/深度学习 SQL 算法
命令行上的数据科学第二版:十一、总结
命令行上的数据科学第二版:十一、总结
66 0
|
6月前
|
SQL 机器学习/深度学习 数据挖掘
云端数据科学平台Deepnote,相当于云上的Jupyter Note
云端数据科学平台Deepnote,相当于云上的Jupyter Note
210 0
|
6月前
|
分布式计算 Ubuntu Unix
命令行上的数据科学第二版 一、简介
命令行上的数据科学第二版 一、简介
41 0
|
机器学习/深度学习 人工智能 自然语言处理
纯Python实现Torch API,康奈尔副教授为自己的课程创建了DIY教学库
纯Python实现Torch API,康奈尔副教授为自己的课程创建了DIY教学库
114 0
|
机器学习/深度学习 算法 数据可视化
2022年Python顶级自动化特征工程框架⛵
特征工程一般是手动完成,不仅依赖于工程师的丰富经验,也非常耗时。因此『自动化特征工程』可以自动生成大量候选特征,帮助数据科学家显著提升了工作效率和模型效果。
1323 2
2022年Python顶级自动化特征工程框架⛵
|
机器学习/深度学习 数据采集 自然语言处理
2022了你还不会『低代码』?数据科学也能玩转Low-Code啦! ⛵
2022了你还不知道“低代码”?一起看看数据分析、机器学习、深度学习领域最受欢迎的 Python 低代码工具:D-Tale、AutoViz、Lux、Pandas-Profiling、PyCaret、PyTorch Lightning、Hugging Face Transformers。
593 1
2022了你还不会『低代码』?数据科学也能玩转Low-Code啦! ⛵
|
机器学习/深度学习 数据采集 传感器
猿创征文|Python-sklearn机器学习之旅:我的第一个机器学习实战项目
猿创征文|Python-sklearn机器学习之旅:我的第一个机器学习实战项目
105 0
猿创征文|Python-sklearn机器学习之旅:我的第一个机器学习实战项目
|
数据可视化 数据处理 C++
reticulate包——数据科学者的福音
如果你还在纠结:学数据科学到底用 python 还是 R 好?现在我的回答是:大可不必。现在两者的变量可以相互调用了。你可以用 R 做数据处理(tidyverse),可视化(ggplot2),用 python 做开发。
409 0
reticulate包——数据科学者的福音
|
资源调度 索引
《R数据科学》学习笔记|Note16:使用purrr实现迭代(下)
《R数据科学》学习笔记|Note16:使用purrr实现迭代(下)
125 0
《R数据科学》学习笔记|Note16:使用purrr实现迭代(下)
《R数据科学》学习笔记|Note12:使用magrittr进行管道操作
《R数据科学》学习笔记|Note12:使用magrittr进行管道操作
171 0
《R数据科学》学习笔记|Note12:使用magrittr进行管道操作
下一篇
无影云桌面