Excel VBA和Python语言在森林生态气象和水文工作中的应用与比较

2020-02-14 22:17
江西农业 2020年15期
关键词:数据量命令水文

李 淳

(辽宁省森林经营研究所,辽宁丹东 118002)

随着科学技术的不断发展,森林生态气象和水文的观测项目逐渐增加,观测频率也有了显著提高。以辽东半岛森林生态国家定位研究站为例,辽东半岛森林生态国家定位研究站分别在大连庄河仙人洞国家级自然保护区和本溪县本溪市草河口镇设立了森林生态观测站点,森林气象和水文观测因子共计300余项,为了提高数据处理过程中的工作效率和质量,需要借助计算机技术来解决实际问题。VBA和Python在很多科学研究领域都得到了广泛应用[1-8]。本文根据这两种编辑语言在森林生态气象和水文工作中的适用性进行了分析和比较,希望能为广大学者提供帮助。

1 基本介绍

VBA(Visual Basic For Application) 是 微 软 公 司1993年开发的一种应用程序共享的自动化语言,是Microsoft Office应用程序下的Visual Basic的子集,“寄生”在EXCEL等应用程序中,通过执行Visual Basic宏命令来实现其功能[9]。在“自定义功能区”添加“开发工具”后便可使用。

Python由Guido van Rossum于1989年创立,其前身为ABC语言。Python是高级编程语言,创立的目的在于通过更加人性化的设计,节约编辑时间。在实际使用中,使用者需要先安装python程序,再通过“pip install”等方法安装第三方库,如“pip install Numpy”,通过第三方库的方式实现不同的需求。对于森林生态工作,主要依靠NumPy、scipy、matplotlib和pandas等第三方库。NumPy为科学计算的基础库,是scipy、matplotlib和pandas的依托框架;pandas是一个强大的分析结构化数据工具,用于数据挖掘和数据分析,同时也提供数据清洗功能;scipy是一个用于数学、科学、工程领域的常用软件包,用于科学计算和分析;matplotlib受MATLAB的启发构建,用于数据绘图。Python在是近几年发展势头很好的一门语言,近几年一直居于tiobe流行语言排行榜前五名,相对于其他编程语言,易学、语句更人性话。

2 功能比较

2.1 数据存储管理功能比较 VBA管理存储数据主要有两种方式,一是直接对Excel中数据进行存储和管理。如直接操作所在Excel文件中数据,或使用Workbooks.Open Filename等命令读取管理其他Excel中的数据。二是通过与其他数据的交互,实现对数据的存储和管理。如sql server数据库,可使用 Dim*as CreateObject设施连接属性,创建与数据库的连接,再使用INSERT INTO和Open “select*from*”完成数据的上传和下载,实现对数据的存储管理。Python本身没有数据存储功能,通过对其他数据存储文件的操作,实现数据存储和管理。如可通过pandas库中的read_excel、read_table、read_csv、read_sql和to_excel、to_csv、to_sql实现数据的读取和存储功能,也可通过SQLAlchemy等第三方库实现Python与数据库之间的数据交互,进而对数据进行存储管理。需要注意的是,VBA和Python在与不同的数据库进行交互时,连接工具和命令略有不同。

2.2 数据分析处理能力比较 在分析处理少量数据时,可直接使用Cells(row,column)命令对单元格进行操作。在处理大量数据时,如直接对单元格操作会受硬盘读取速度影响,严重影响数据分析处理速度,此时可使用Dim arr as array命令定义并创建数组,将数据分批次读取到内存中,在内存中对数组进行计算,最后使用range(Cells(row,column),Cells(row,column))=arr()命令将结果存储到sheet中。数据量越大,越能体现数组操作的优势。在数据分析过程中,使用for…next;do…loop;while等命令对单元格数据或数组数据逐一进行遍历运算,使用if…then…endif在遍历过程中进行判断和数据筛选,最后使用sum,max,min等命令实现简单的统计运算。

Python在分析处理数据时,先使用pandas读取数据,读取后数据结构为DataFrame数据结构。在处理过程中,除了可以使用for,if命令进行遍历循环判断外,还可以groupby()等命令对数据进行筛选,大大降低了编译难度和时间。受NumPy、scipy和pandas等第三方库的支持,Python比VBA的数据统计分析功能更加丰富。

2.3 数据可视化比较 VBA可以较为直观地在Excel中显示数据分析处理过程,在sheet页面直接进行数据展示,也可绘制散点图、柱状图等常用图形进行数据可视化。Python本身无数据存储功能,不能直接进行数据展示,只能借助Excel、图片或其他软件窗口的方式展示数据。Python使用matplotlib等第三方库完成数据绘图,Matplotlib可绘制的图形样式基本涵盖了matlab和R中的所有图像,因此Python可绘制图像更加多样,更加精确地实现数据可视化。

2.4 运算能力比较 在数据处理量方面,VBA是Visual Basic在Office上的应用,受Office框架影响,VBA单次可读取和处理数据量相对较少。Python脱落框架限制,可处理数据量远远大于VBA。在数据处理速度方面,python是较高级的语言,简单的运算,VBA的速度较为更快。但在处理较为大量复杂的数据时,Python的运算速度和能力表现更为优越。

2.5 扩展功能与应用比较 Excel VBA较为重视数据展示,成品制作过程相对简单,操作简单方便,可移植性强。制作出来的成品无需培训学讲即可推广使用。Python推广难度相对较大,需要先进行培训学习。但Python可以制作出更为复杂的数据分析模型,也可制作软件成品进行推广使用。Python可以融合多种编程语言进行混合编译,功能更多,可应用范围更广。

3 结语

从森林生态气象和水文数据处理实际工作需求出发,Excel VBA和Python语言都有各自优秀的适用性。VBA具有易入门、操作直观、可传阅性高的特点,是小型数据和常规研究最高效的选择,遇到不熟悉的函数命令式,可通过录制宏的方式进行针对性学习和应用。Python可以完成更复杂的设计方案和计算工作。

猜你喜欢
数据量命令水文
只听主人的命令
继往开来 守正创新——河北省水文工程地质勘查院
基于大数据量的初至层析成像算法优化
继往开来 守正创新——河北省水文工程地质勘查院
高刷新率不容易显示器需求与接口标准带宽
水文
水文水资源管理
宽带信号采集与大数据量传输系统设计与研究
移防命令下达后
这是人民的命令