基于Python和R语言在农机管理数据中的应用

2021-11-30 10:39昌吉市滨湖镇农业发展服务中心范治璇杨树楠余桂玲
河北农机 2021年6期
关键词:键值姓名语句

昌吉市滨湖镇农(牧)业发展服务中心 范治璇 杨树楠 余桂玲

Python和R作为一种高效的数据整合工具,顺应了各类管理数据处理自动化快速发展需求。这类数据处理软件要求使用者具备一定的C或C++计算机语言基础。对于新时代农机管理人员而言,大多具备机械电子类教育背景,一般对C类计算机语言比较熟悉,在此基础上开展Python和R的应用已经具备了人员素质条件要素。Python和R语言环境本身具有众多的扩展库,其处理海量数据能力的特点十分适合工程技术、科研人员处理数据、制作图表,甚至开发科学计算应用程序。在数据处理中应用该程序可以有效地提高工作效率。现就对Python和R在农机数据管理中的使用方法做如下介绍。

1 Python的特点

Python语言结构比较简单,关键字相对其他语言少很多,而且语法定义明确,对初学者更容易掌握,学习过程较为友好。由于Python代码定义更清晰,使其便于该软件使用者阅读理解。

Python的开放源代码特性及容易维护是它可以大范围使用的关键。Python有广泛的跨平台的标准库,兼容UNIX、Windows和Macintosh等主流操作系统,能移植到多重平台。对于使用者个人不愿意开放的一些算法,可以先使用C或C++完成算法部分的程序,然后在Python程序中调用。在互动模式支持下,可以从终端输入执行代码获得结果以进行互动测试和代码片段的调试。

2 Python在农机管理数据处理中的使用方法

2.1 数据的横向合并

作为一个功能完善、强大的语言python的pandas库中的merge()支持各种内外连接。工作表数据合并方式包括左连接、右连接、内连接、全连接。在处理两个表格数据时,左连接是以左边的表格为基准表把右边的数据合并过来,右连接是以右边的表格为基准表把左边的数据合并过来,内连接则是把左边表格和右边表格中同样的数据类型进行合并,全连接则是把左边和右边表格全部数据都进行合并。合并时确定一个键值作为变量进行合并时的参照。

2.1.1 基本的合并方法。

合并是基于Pandas库运行,因此先应将所需处理的数据导入pandas库再进行下一步操作,如有两张工作表“D1农机购置补贴资金发放明细表2019”“D2农机购置补贴资金发放明细表2020”,先要导入库:importpandasaspd,然后才能将这两个表合并起来,对于表中“姓名-机型-补贴值”项,键值为姓名,基本语句为:merge(D1,D2,on='姓名'),如不指定,则默认内连接(inner)。左连接时,基本语句为:merge(D1,D2,on='姓名',how='left')。右连接时,基本语句为:merge(D1,D2,on='姓名',how='right')。全合并时基本语句为:merge(D1,D2,on='姓名',how='outer')。以上的几种合并,都是按照表中姓名来合并的,两个表姓名一样,即将这条数据合并,这个姓名被称为键值,作为一个变量被用来作为合并参照。

2.1.2 特殊情况合并方法

对于键值名不一样的合并方法,如上例D1和D2表格中都有一个变量“姓名”,假如这两个表的键值的名字分别为“机型”“生产厂家”,这种情况只要用left_on=和right_on=分别指定两个键的名字即可,语句为:merge(D1,D2,left_on='机型',right_on='生产厂家')。如果上例表格D1的键值是变量,D2的键值是一个索引,合并时使用?left_index=True或?right_index=True语句,来声明某个数据的索引应该被当作键值,基本语句为:merge(D1,D2,left_on='姓名',right_index=True)。

对于有一样变量名的两个数据列的合并方法。如两个数据表有本区域数名农机登记所有人近两年的审验数据,数据名为“2019农机审验记录表”“2020农机审验记录表”。生成语句为:2019农机审验记录表=pd.DataFrame({'姓名':[张非,李俊,王欣,赵龙],'审验情况':[已审验,已审验,已审验,已审验]}),生成语句为:2020农机审验记录表=pd.DataFrame({'姓名':[张非,李俊,王欣,赵龙],'审验情况':[已审验,未审验,未审验,已审验]})。运行后,两个'审验情况'会自动打上后缀,一个是_x,一个是_y,使用者也可以自己加后缀,使用suffixes=()?选项。比如将后缀变为:_2019和_2020,基本语句为:merge(2019农机审验记录表,2020农机审验记录表,on='姓名',how='left',suffixes=('_2019','_2020’))

2.2 数据的纵向合并

纵向合并也称为堆叠。比如,把上述农机购置补贴资金发放明细表分成两个部分。堆叠的基本语句为:concat([D1,D2]),堆叠起来的数据,可以用?keys=[,]?标记出哪部分来自D1,哪部分来自D2,基本语句为:concat([D1,D2],keys=['D1','D2'])。另外,还存在直接将两个数据横向堆在一起的横向堆叠,其与横向合并的区别就是指定了axis=1。

2.3 文本数据文件导入python的方法

文本数据文件可以直接用pandas中的pd.read_csv('filename')命令直接读写。应注意,如果直接写入,则会覆盖源文件,所以在写之前先读取一下文件,再进行写入,则写入的数据会添加到文件末尾而不会替换掉原先的文件。通过read()命令读取文件后,指针会移到文件的末尾,再写入数据就不会有问题了。

3 R语言的特点

R是从S语言演变而来的一种基于对象的强类型语言,是一种代码全部公开免费使用的开源软件,可以在多种操作系统中运行,其语法灵活、结构简单。

R语言对象有多种属性,类是其中重要的属性之一。最基本的类包括数值、逻辑、字符、复数、因子,符合类包括矩阵、数组、因子、数据框。R可以在编写函数和脚本后根据需要输入命令,进行批处理运算。特定的分析功能需要用相应的R程序包实现。每个R程序包包括R函数、数据、帮助文件、描述文件等内容。

R语言编程不需要申明变量,使用者编写的程序可直接调用,编程灵活但区分字母大小写,比如逻辑向量运算:TRUE,FALSE全部大写;isTRUE(x)判断x为TRUE。通常,一个命名必须以点(.)或者字母开头,如果以点(.)开头,第二个字符不允许是数字,但数字可以放在中间或结尾。基本命令有表达式和赋值两种形式。命令可以用分号(;)隔开或另起一行。基本命令用大括弧({})放在一起构成一个复合表达式。在一行命令中,从#号开始到句子收尾之间的语句是注释。

4 R在农机数据管理中应用

4.1 Excel数据导入R的方法

第一种方法:使用剪贴板,调用read.table函数,先选择农机管理数据Excel中的数据源,然后进行复制;在Rstudio中输入脚本read.table("clipboard",header=TRUE),回车即可。注:header=TRUE,表示首行为标题行,若为FALSE则标题行也算在正文第一行。

第二种方法:先将农机管理数据Excel另存为csv文件,使用read.csv函数打开Excel数据源,然后另存为Agrimachine.csv文件;然后在Rstudio中输入代码read.csv("C:/Users/Administrator/Desktop/Agrimachine./Agrimachine.csv",header=TRUE),回车即可。

第三种方法:将农机管理数据Excel另存为txt文本文件,然后使用read.table函数;打开Excel数据源,另存为Agrimachine.txt文件;路径为【C:UsersAdministratorDesktopAgrimachine】,然后在Rstudio中输入代码read.table("C:/Users/Administrator/Desktop/Agrimachine/Agrimachine.txt",header=TRUE),回车即可。

第四种方法:使用RODBC中的odbcConnectExcel来创建与Excel的连接,获取农机管理数据Excel中的数据;由于2007、2010版xlsx格式的Excel文件导入R语言可能会出现错误提示,可先调用xlsx包来读取这类版本格式的电子表格,因此在从快捷实用方面考虑还是建议采用前三种方法导入Excel数据。

4.2 将数据快速读入R—readr和readxl包

readr包在R中提供了若干函数以读取数据。通常用R中的read.table函数来完成工作表数据读入任务。readr包提供了许多替代函数,既增加了额外的一些功能也提高了运行速度。有测试显示,用不同的指令完成相同的任务,read.table用时50.62秒,而read_table用2.76秒,其原因在于read_table把数据当作固定格式的文件,并且利用C++快速处理数据。因有更高的效率,在一些场合read_table几乎代替了read.table。

对于Excel格式的数据,可以在R软件安装readxl包。readxl包提供的函数可以读取.xls和.xlsx格式的工作表。其read_execl函数和readr中的函数同样都是基于C++语言库的,读取速度迅速。需强调的是readxl包没有任何的外部依赖,可以不安装Excel就可以在任意平台上用它来读取数据。

4.3 文本类型文件导入R的方法

使用read.table函数以数据框的格式读入.txt数据,适合读取要求每列的数据类型相同的混合模式的数据。通常read.table只需要有文件路径、URL或连接对象就可以读取数据,而且可以设置各类参数,所以非常方便。

数据中含有中文时,导入前应设置中文转码参数,否则直接导入可能出现不识别中文情况。字符型数据读入时会自动转换为因子,因子是R中的变量,由于因子只能取有限的几个不同值,将数据保存为因子可确保模型函数能够正确处理。但是当变量作为简单字符串使用时可能出错。防止字符串转换为因子可采用输入参数、更改系统选项、指定抑制转换的列等方式来实现。也可通过一个索引向量指定,或者一个逻辑向量,在需要转换的列取值FALSE,不需要转换的列取值TRUE。

以上,简单介绍了Python和R在农机管理过程中进行一些工作表格和文本数据处理的应用场景,目的只是希望对广大农业农机管理人员主动掌握这些实用化数据管理工具起到抛砖引玉的推动作用,但要想熟练掌握并使用这类工具,就必须深入学习和参阅相关教程及文献,不断在实践中完善操作技能,举一反三,就能极大地提升工作效率,也一定能使农机管理技术人员顺应新时代要求并以全新面貌展现在世人面前。

猜你喜欢
键值姓名语句
非请勿进 为注册表的重要键值上把“锁”
一键直达 Windows 10注册表编辑高招
小记者档案
一年级语文上册期末测试
第一单元综合模拟测试卷
我喜欢
冠词缺失与中介语句法损伤研究
找朋友
作文语句实录
注册表值被删除导致文件夹选项成空白