基于Python的数据批处理探讨与应用
2022-03-06牛常领毕德贇
牛常领,毕德贇
(1.青岛市勘察测绘研究院,山东 青岛 266032; 2.青岛市西海岸基础地理信息中心有限公司,山东 青岛 266000;3.青岛市海陆地理信息集成与应用工程研究中心,山东 青岛 266000)
1 引 言
日常数据处理工作中,往往会遇到大批量、有规则的数据,且需要重复性的操作;目前市场上已经出现了众多的数据处理软件,但需要按照软件设定好的类型和规则进行,由于数据结构多种多样,有些数据即便有一定的规则,也很难找到现成的数据处理软件来实现数据的快速批量处理。因此,目前有些批量的数据处理还仍然依赖手动进行,这样既难以保证数据处理结果的质量,又消耗大量的人力,降低了数据处理的效率[1]。为避免重复性工作、提高数据处理效率、减少手动操作,从大量数据中分析数据规则并进行快速交互地批量处理仍然有着广泛的实际需求[2~5]。
从大量数据中抽取具有一定规则的数据集,并对这些具有共性特征的大量数据集通过软件编程的方式进行快速交互地批量处理或加工,以提高作业效率,显得日益重要[6,7]。在数据处理与分析方面,Python作为一种不受局限、跨平台的开源编程语言,具有广泛的应用领域[8~11],对编程有基本的了解即可很好地使用它。Python在数据批处理方面具有明显的优势,利用少量的代码、通过调用其自带的标准库以及丰富的第三方数据处理包,可快速实现对文本文档、Excel文件、地理空间数据等各类数据的批处理。本文结合工作实践,探讨Python在数据批量处理中的常见应用,以期为数据批处理方面提供切实可行的实践思路。
2 Python编译工具
Python作为一种简洁高效的语言深受广大程序员的喜爱,其上手简单、代码易读、跨系统移植以及包含大量的功能类库等特点,使其在提高数据处理效率、实现数据的自动化批处理等方面得到广泛的应用。Python除了自带的标准库外,还包含了大量的第三方功能库,只需通过pip指令便可自动下载安装,使得Python编程变得更加容易,功能更加强大。
Python常用的编辑工具有PyCharm、Jupyter、VisualStudio等,PyCharm适合大项目研发,Jupyter适合做科学研究,Visual Studio适合一般开发,可根据实际需求选择对应的编译工具,以Visual Studio 2017简要说明基于Visual Studio编译工具Python的使用。
Visual Studio 2017安装时工作负载中勾选Python即可完成Python3.6版本的安装。在Visual Studio 2017中新建Python应用程序解决方案后,可设置Python环境、安装Python包、卸载Python包、添加Python类文件等操作,如图1所示。
利用Visual Studio 2017里的扩展和更新功能,可以添加一些常用的功能插件,如通过联机搜索关键字highlight,安装Highlight all occurrences of selected word插件,可以选择相同变量使其高亮。
图1 VisualStudio2017中Python常见操作
3 Python数据批处理应用实例
下面分别以文本文件数据、Excel文件数据以及地理空间数据为例,给出利用Python实现数据批处理操作的相关过程。
3.1 图形用户界面设置
Tkinter是Python的标准GUI库,使用Tkinter可以快速创建GUI应用程序。通过导入Tkinter模块、创建窗口与控件以及指定控件的父窗口等操作创建GUI,通过控件的command绑定函数为控件赋予操作,具体流程如图2所示,设置的用户界面如图3所示。
图2 用户界面设置流程
图3 用户界面
3.2 文本文档数据批处理
土地供应过程中,需要土地使用单位按照标准提供txt的地块坐标文件,数据入库过程中,需将大量的txt坐标文件转成shp文件,如图4所示。通过Python编写的脚本,在不足2分钟的时间实现了对 2 000多宗地块的快速批量处理。通过Python将txt坐标文件转为地理矢量shp文件的步骤主要包括导入模块、按照规则读取txt文件、生成shp文件,具体流程如图5所示。
图4 文本文档批量转矢量数据
图5 文本文档转矢量数据流程
3.3 Excel文件数据批处理
Excel是日常工作中经常用到的办公软件,在处理数据方面有着优异的性能,通过Python提供的Excel处理第三方库,可实现Excel数据的批量快速处理。某执勤人员可能负责多个执勤点,在Excel表中按照人员进行管理,其执勤点坐标在一个表格单元中,为了实现执勤点位的空间化落图,需要将坐标分开、并将各坐标对应的其余数据保留,如图6所示。
利用Python处理Excel文件步骤主要包括下载并导入第三方库、获取Excel信息、按规则处理数据并保存处理后的数据,具体流程如图7所示。通过Python编写的脚本,在不足1分钟的时间实现了近万行数据的批量处理。
图6 数据示例
图7 Excel数据流程
3.4 地理空间数据批处理
ArcGIS地理处理工具一般只针对单个数据集执行,而运用Python语言中的ArcPy库[12~15],通过少量的代码编写,可对地理空间数据进行批处理。以地理空间数据的批量裁切为例,用58个分图图则范围对二级陆域数据进行批量裁切,以获取各图则所包含的陆域数据,如图8所示。利用Python实现地理空间数据批量裁切的操作步骤如图9所示:
图8 批量裁切示例
图9 批量裁切操作流程
3.5 Python可执行文件生成
图形用户界面编译完成后,Python提供了把代码文件编译成.exe可执行文件的方法,只要复制可执行文件就可以在其他电脑上运行,既保证了代码的安全又方便代码使用。常见的将Python源文件编译为可执行文件方法有pyinstaller工具或py2exe工具。
方法一:通过pyinstaller工具将Python文件编译为可执行文件步骤如下:
第一步:安装pyinstaller工具。利用pip install pyinstaller语句进行安装,pyinstaller.exe默认安装到Python路径的Scripts子路径下。
第二步:通过语句“pyinstaller选项Python源文件”进行编译。cmd中输入盘符f,利用语句“cd F:Program Files(x86)Microsoft Visual StudioSharedPython36_64Scripts”进入pyinstaller.exe程序路径,输入“pyinstaller-F-w mycode.py”,在dist子路径下得到可执行文件。
方法二:通过py2exe将调用ArcPy库的Python文件编译成可执行文件步骤如下:
第一步:安装py2exe工具。下载并安装py2exe-0.6.9.win32-py2.7.exe,py2exe默认安装到Python27路径的Scripts子路径下:C:Python27ArcGIS10.3Scripts。
第二步:编写脚本文件setup.py准备打包。
fromdistutils.core import setup;import py2exe;
script="rE:make oshp2.py"#入口文件options={'py2exe':{"excludes":["arcpy"]}};
setup(windows=[script],options=options);
第三步:在Python源文件中添加如下代码,以获取arcpy路径。
from site import addsitedir;from sys import executable;from os import path;
interpreter=executable;sitepkg=path.dirname(interpreter)+\site-packages;
addsitedir(sitepkg);
第四步:通过语句“Python文件路径py2exe”生成可执行文件。通过Python E://setup.py py2exe语句,在C:Python27ArcGIS10.3路径下生成build(可删除)和dist(包含可执行文件)文件。
(5)ArcGIS相关文件路径设置。ArcGISdist文件下新建sit-packages文件,并添加Desktop10.3.pth文件,文件内容为电脑安装的ArcGIS相关路径。
F:Program Files(x86)ArcGISDesktop10.3in;
F:Program Files(x86)ArcGISDesktop10.3ArcPy;
F:Program Files(x86)ArcGISDesktop10.3ArcToolBoxScripts;
C:Python27ArcGIS10.3Libsite-packages; C:Python27ArcGIS10.3Lib
4 结 语
工作中往往会遇到大批量、有规则的数据,且需要重复性的操作,通过数据分析,利用Python编写脚本语言,可实现数据的批量处理,大大减轻工作量并能提高数据处理的准确率。本文结合工作实践,探讨了Python在文本文档、Excel文件、地理空间文件数据批量处理中的常见应用,为数据批处理方面提供了切实可行的实践思路。