APP下载

Python与R语言混合编程方法的实践

2021-06-16刘曜硕

电子技术与软件工程 2021年5期
关键词:编程语言编程运算

刘曜硕

(中国人民解放军63637 部队 甘肃省酒泉市 732700)

R 语言作为主流统计软件所发挥作用逐渐突出,Python 作为面向对象高级语言,具有简单易学,易操作的特点。在实际的应用中R 语言具有强大的统计分析性能,但是对于大项项目分析和管理存在缺点,而Python 虽然能够对数据信息进行准确的获取,但是对于数据的分析需要通过R 语言作为辅助。因此,将Python 和R 语言加以混合编程能够实现统计运算的良好进行。

1 Python编程语言和R语言相关概述

1.1 Python编程语言风格

Python 是ABC 语言代替品,其提供高效、高级的数据结构,能够有效简单的面向对象进行编程。Python 编程语言设计风格清晰划一,也正是因为在这一原因Python 编程语言容易读懂,容易维护,被大量用户所接受,用途广泛。Python 编程语言开发思想为,对特定问题,选择最为有效的方式解决即可。Python 编程语言是限制性非常强的语言,在编程过程中不良的编程习惯都将导致编程无法通过编译。例如if 语句的下一行不向右缩进。在Python 编程语言中最为重要的一点便是缩进规则。相比其他语言,Python 编程语言最为突出的特点便是模块界限,其完全有每行首字符位置所决定,而其他语言,例如C 语言则主要使用“{}”确定模块界限。

1.2 Python编程语言优点

Python 编程语言具有简单、易学、速度快、开源、免费、可移植性、解释性、面向对象、可拓展性、可嵌入性、丰富的库、代码规范等优点。

首先Python 编程语言是简单思想语言,阅读良好的Python 编程员对Python 编程的阅读就如同在阅读英语,其能够促使相关人员更加专注的解决问题,而不是对语言本身进行摸索。也正是因为Python 编程语言的简单性,对于Python 学习比较简单,因为在Python 中有说明文档。Python 编程语言底层是通过C 语言进行编写的,多数标准款、第三方库则是通过C 语言进行编写的,因此运行速度较快。另外,Python 为FLOSS 之一,应用者能够自由发布软件拷贝,对其源代码进行阅读、改动,并且可以将其应用至新自由软件内。开源本质促使Python 能够移植至多个平台中,例如z/OS、BeOS、OS/2 等。解释性为用编译性语言,例如C 语言或C++语言编写程序能够由源文件转换至用户计算机所使用的语言。此过程通过编译器以及不同标记、选项共同完成。当对程度进行运行时,转载器/连接软件将用户程序复制至内存中运行。但是Python 编程语言苏编写的程序不用编译为二进制便能够在源代码中运行相关程序。计算机的内部,Python 解释器将源代码转化成字节码中间形式,之后将其翻译为计算机语言运行,使得Python 编程应用更加简单,程序容易移植。面向对象则是Python 编程支持面向过程编辑,同时支持面向对象编程。面向过程语言中,程序由过程或者仅是使用重用代码函数构建。面向对象语言中,Python 程序有功能和数据组合对象构建。可扩展性为能够将Python 编程语言嵌入至C 语言和C++语言中,提供脚本功能。在Python 中具有庞大的标准库,其能够对各种工作进行处理,例如密码系统、线程、GUI、文档生成、数据库、电子邮件、TK 等。除标准库外[1],Python 还具有高质量库,例如图像库、Twisted 等。最后,Python 编程缩进方式是代码连续性良好,代码规范,在对程序进行编写是不用将其编译为二进制。

1.3 R语言特点

R 语言为统计分析软件,及图像显示、统计分析为一体,能够应用至Mac 和Windows 系统中。R 语言特点具有以下特点:首先,R 语言为自由软件,意味着R 语言完全免费,能够在其网站镜像内下载相关安全程序、程序包、文档资料以及源代码,标准安装文件中具有多个模块、统计函数,在进行安装后便能够进行常用统计。其次,R 语言为可编程语言,其作为开放统计编辑,语言易懂,易学,并且进行学习后编程者能够通过编制函数拓展语言。同时R 语言中所有函数以及数据都保存于程序包中,当载入包时,相关内容才能够被运行,内容方可被访问。部分基本和常用程序包多收入至标准安装文件中。新统计方式的出现,安装文件中的程序包也会随之发生变化。另外版安装文件内,包括base、mle、ts、mva、survival等模块。R 语言互动性较强,除图像输出,其余输出输入窗口均在同一窗口,在输入语法内若发生错误将立即在窗口中提示,对以往输入命令存在记忆功能,能够将以往输入指令调出,并加以编辑修改。输出图形能够对PNG、BMP、JPG 图像格式进行直接地保存,同时能够对PDF 文件进行直接地保存,在数据库和编程语言中具有良好接口。

2 Python与R语言混合编程方法分析

Python 调用使用R 语言为Python 计算机语言中rpy2 程序库。其能够实现Python 编程语言读取调用R 语言函数、对象以及方法。如果操作系统安装R3.0 和Python2.7 以上的版本时,命令行中运行pip install rpy2 便能够对程序库进行安装。Rpy2 有调取方式分为两种:低级接口和高级接口。

2.1 低级接口

在R 语言中底层的减法、加法、乘方、循环、开方等基础运算,运算速度比较慢,由于R 语言属于解释型的语言,处理器对每一句代码进行临时的编译,下达指令后进行计算。但在矩阵运行方面速度较快,尤其是存在多个统计运算包的情况时,能够直接由C 语言层面对复杂统计语言进行运算,甚至有时能够超过Python中scipy、numpy 运算库的运行效率。在rpy2 低级接口主要用于高级接口没有封装或者对于运算性能具有特殊需求时。Python 引入rpy2.rinterface 模块便能够对低级接口加以使用,例如In4:

需要注意在其中需要使用initr()函数对R 语言进行初始化,确保后续接口的正常使用。同时需要注意的是此代码只能够进行一次运行,避免出现错误。

对于低级接口的调用方式和高级接口相似,差异处为低级接口能够对当前R 运行环境内R 语言对象进行访问,此过程通过rpy2.rinterface.globalenv 中get 函数完成,此函数将在Python 中构建指向R 语言环境sexp 指针对象。

通过相关操作可以发现,低级接口无法对R 语言结果直接通过print 函数进行打印,由于Python 中储存对象实际指向内存地址。对具体数据进行访问需要对变量下标进行访问,例如通过PearsonX2 进行检验之后通过下标对P 值、自由度、统计量加以表示[2]。

2.2 高级接口

Python 引入rpy2.robjects 模块便能够对高级接口加以使用,例如In1:import rpy2.robjects as robjects。

之后将rpy2.Robjects.r 内封装R 语言对象简写为robjects.r。对于R 语言高级接口应用首先需要在Python 内建立R 语言矩阵对象。通过比较分析,通过rpy2.robjects.IntVector 把Python 内list 元素转化为R 语言内常用数据结构——向量,相当于R 语言内通过data=C(99,75,5,21)创建向量。另外,在rpy2.robjects.r 内集成矩阵函数,将Python 内创建向量作为参数,对列数、行数加以确定后,便能够在Python 内使用R 语言矩阵对象。相同,能够通过rpy2.robject.DataFrame 对R 语言数据框进行定义。其中rpy2.robjects.r[r—code]中,如果把r— code 换为R 语言内的变量名或函数名,将其赋值为Python 变量,便能够创建对应的函数或者变量Python 对象。将R 语言内chisq.test 的函数赋值至变量chisq—test 内创建函数对象,之后把chisq—test 作为普通Python 的函数进行使用。对于函数参数的设置和R 语言保持一致。在完成后,将之前创建数据放至chisq—test 中作参数,并能够得出相关的检验结果。因此,Python 通过rpy2 调取R 语言中统计函数非常简便,同时程序可读性较强。

3 Python与R语言混合编程方法的实践应用

3.1 实例背景

通过weather underground 所提供气候数据接口,对广州近五年气温数据获取,之后按照相关数据对广州未来天气情况进行预测,并通过R 语言程序包开展时间序列制图。

3.2 获取数据

通过Python 内bs4 库和urllib2 库中Beauti—fulSoup 模块对网页数据进行获取,urllib2 为Python 中获取URLs 相关组件,其对指定URL 发出相应请求,实现数据信息的获取,在此通过GET 方式请求网站气象数据相应接口,之后对指定城市,指定时间内气象数据进行获取。BeautifulSoup 模块主要是提供处理导航、修改分析树、搜索函数,利用解析文档向用户提供数据抓取服务。在此通过应用该模块能够自由按照实际需求对urllib2 库所获取气象数据进行提取,例如广州地区天气气温、湿度、风向、风力以及日出日落时间。如果只需要获取气温数据,则可通过BeautifulSoup 模块对urllib2中数据进行单独提取。

3.3 整理数据

因为所获取的气温数据单位是华氏度,需要将相关数据转换成摄氏度。通过Python 需要通过循环语句对数据进行逐一地转换,但是R 语言中通过利用其矩阵特性,data.frame 数据框内仅需一句代码便能够进行批量转换。如全文所提。通过rpy2.robject.DataFrame 在R 语言内定义一个数据框,便能够进行数据转换工作[3]。

3.4 分析数据

通过R 语言forecast 程序包生成、预测序列数据。第一,通过msts 函数建立具有季节效应时间序列,为实现简单便捷,将季节效应时间设定成1年,将seasona1.periods 设置成365.25。之后通过tbats 函数将数据放入TBATA 模型中进行空间建模。通过forecast生成预测数据。

3.5 可视化作图

对数据进行分析后,便能够通过R 语言ggplot2 程序包进行可视化作图,需要注意,rpy2 已经被封装与R 语言ggplot2 程序包内,只需要在Python 中引入 rpy2.robjects.1ib.ggplot2 模块便可在Python 内通过ggplot2 函数作图。

4 总结

本文对Python 与R 语言混合编程方法进行分析,并通过实际案例对Python+R语言编程的数据获取与统计运算可行性进行展示。在应用过程中对Python 与R 语言优势进行结合,在其中两种语言对各自发挥作用。对于该技术的应用需要在实际研究中加以充分开发,从而实现Python 与R 语言混合编程广泛应用。

猜你喜欢

编程语言编程运算
重视运算与推理,解决数列求和题
压力-体积转换在CFC编程语言中的实现解析
编程,是一种态度
编程小能手
有趣的运算
纺织机上诞生的编程
Java编程语言的特点与应用
浅谈不同编程语言对计算机软件开发的影响
面向对象Web开发编程语言的的评估方法