APP下载

Python数据结构在社保大数据领域运用分析

2023-05-29肖转红

电子技术与软件工程 2023年7期
关键词:批处理数据表脚本

肖转红

(山西运城师范高等专科学校 山西省运城市 044000)

Python 语言在计算机领域有着较为广泛的应用,能够基于既定的数据结构方式来提升对各类数据进行处理的效率,也能够保证数据分析结果的准确性。社保是社会民生工程的重要组成部分,是基本的社会保障之一,将Python 数据结构与大数据技术的应用结合起来,对提升社保数据的处理效率,改善社会公共服务的水平具有积极的意义,能够为更多政务服务工作的开展提供参考。

1 Python的数据结构

1.1 遍历函数的应用

Python 语言从本质上来说是一种工具,能够对基于网络环境的空间数据进行批量处理。在Python 语言中应用遍历函数,能够基于Pythonfor 的循环语句、内置函数enumerate,遍历汇集了空间数据的数据表文件中的目录、序列项目,将遍历后得到的结果应用数组、链表等数据结构的方式存储起来[1]。

1.2 数据结构

基于遍历函数的Python 数据结构,只需要依据OSwalk()、glob()等的遍历函数,就可以直接获取到网络空间文件夹内的所有目录和数据表文件,进而获取到具体的数据结构[2]。

2 在社保大数据领域应用Python数据结构的情况分析

将Python 数据结构应用到社保大数据领域,能够在应用大数据技术的基础上,借助Python 数据结构来实现对于更多复杂数据内容的批量处理和任务执行,对于提升大数据技术的应用价值,提升社保服务质量水平具有积极的作用。基于此,在对社保大数据领域应用Python 数据结构的情况进行分析时,主要可以从以下几个方面来入手:

2.1 数据表文件批量处理方案

2.1.1 扩展工具的应用

对数量较多的数据表文件进行批量处理,需要应用扩展工具来实现。当前能够应用于Python 语言的扩展工具,以ARC-TOOLBOX 扩展工具、矢量裁剪扩展工具、Arcpy 站点包扩展工具三种为主。

2.1.2 硬件环境搭建与空间批处理对象的创建

在应用Python 数据结构来对数据表文件进行批量处理时,首先需要基于数据表文件批处理的实际需求,确定应用的数据库服务器类型。本文在对数据内容进行处理时,主要选择应用IBMX3850 系列处理器、IBMDS3512 磁盘阵列,并在单台的磁盘阵列中配置8块储存空间为2T 的SAS 硬盘[5]。在测试软件的选择方面,主要应用“Windows+ArcMap”软件包的方式,在设置ARCTOOLBOX、Geoprpcessor 对象工具以及相关组件的前提下,确保对数据表文件进行处理时的环境和组件都能够体现出良好的兼容性,也能够确保数据处理的稳定性和准确性。在这一过程中,应注重列表这一数据结构的重要组成部分,在Python 的数据结构中,列表通常作为函数的返回类型使用,能够实现对于列表中各项元素的添加、删除以及查找等操作,列表中的具体元素值也可以被修改。列表在应用中需要基于一定的方法来实现排序和逆序,应用不同的算法,能够在提出数据查找需求之后,基于不同的算法程序和逻辑来实现相应代码的运行[6]。这一过程是影响不同数据结构运行效率的主要因素,因而对于Python 数据结构的设计,需要重点考虑列表的不同形式。

2.1.3 Python 数据批处理的脚本程序开发

在确定空间批处理对象之后,需要考虑遍历函数的应用原理,结合遍历操作的基本步骤和流程,在IDLE和pycharm 编辑器中,设置ARCTOOLBOX 插件的Geoprocessor 对象工具以及Define Projection 定义投影工具,在工具窗口中点击下一步的操作指令之后,可以实现对于Python 脚本程序工具语法以及执行代码的定义,从而选择更符合实际数据处理需求的Python 脚本程序以及工具类型。在这一过程中,还需要对实际运行的代码进行拷贝处理,结合数据批处理的具体情况,对相应的工具脚本参数情况进行修改,让工具脚本参数能够适应ArcGIS 的地理空间中对于数据批处理提出的实际操作要求。

2.1.4 脚本程序的数据批处理执行

在完成脚本程序的开发之后,还需要基于既定的脚本程序来对具体的数据进行批处理的执行操作。在这一过程中,需要考虑IDLE、pycharm 的集成开发环境这一前提,在充分发挥Python 汇编语言作用的情况下,满足对于多样化ARCTOOLBOX 工具或插件以及基于ArcGIS 空间数据处理的脚本程序的开发。以此开发流程得到的Python 脚本程序,能够满足描述GIS 数据、更改目录、命名分解文件、罗列列表等方面的功能。考虑到Python 脚本程序在实际开发中的应用,对基于脚本程序的数据批处理执行,还应具备实现批量投影裁切与输出的功能。在这一情况下,实际进行Python 脚本程序数据批处理执行的流程,主要能够应用到以下代码:

import os

作为当前工作目录path=os.getcwd()#path

获取当前工作目录路径current_path=os.getcwd()#

print (current_ path)

'/ZC/Download/data'

更改当前数据表文件目录、分解为多个目录的文件命名的执行代码为:

fpath,fname = os.path.split("要分解的路径")

a,b=os.path.split('ZC/Download/data/zc.txt')以最后一个目录为界分割

print a, print b

'ZC/Download/data'

'zc.txt'

在此基础上,当脚本程序运行的执行命令为获取目录文件列表时,实际的执行代码运行过程应为:

设置路径:path=os.getcwd()#

获取指定路径文件:dirs=os.listdir(path) #

循环读取路径下的文件并筛选输出:for i in dirs: #

if os.path.splitext(i)[1]==".py":# 筛 选Coverage、Excel、csv 等格式的文件

print i(i 表示后缀名为py 的文件)

而对于需要获取RrcGIS 影像数据的情况,在保证系统数据满足批量投影裁切的要求之后,实际的执行代码运行过程为:

在以上所有的代码运行完成后,就可以基于Python语言来实现对于不同矢量数据表的分类导出,并结合系统以及脚本的程序自动将获得的相应数据表储存到制定的文件夹当中,从而实现对于批量数据表的有效处理。

2.2 SET数据结构

在明确应用Python 语言进行数据表文件批量处理的运行原理前提下,考虑社保大数据领域对数据处理提出的要求,应在保证实现对数据表文件进行批量处理的前提下,进一步通过优化集合列表的方式,在Python中建立一个集合列表,让实际数据处理中不同的数据结构都能够更准确地指向需要进行访问的地址。从Python数据结构的角度进行考虑,需要明确基于程序语言的数据结构本身是一种能够从内存中获取数据地址进而得到数据的方式,应用各种类型的编程语言和数据结构,最主要的目的就是能够借助计算机实现对于内存中数据的读取。现阶段,Python 语言能够应用于系统编程、GUI编程、互联网脚本以及数据编程等多个不同的行业领域。

基于此,在应用Python 结构对数据进行处理时,首先需要构建一个LIST 的数据结构,基于单链序列、双链序列以及环形序列来实现对于其中各类数据信息的精确索引。其中,单链序列主要是指以实现单向索引为主要目标,每个节点只包含下一节点位置;双链序列能够实现前后双向的查找,每个节点都包含前一节点与后一节点的地址;环形序列则通过序列节点指向的方式,结合单向序列的原理来满足对数据进行精确索引的需求。应用这一列表的方式,能够实现对空间任一个数据位置的插入、切片和删除,也不会受到重复数据值的影响。

2.3 社保相关数据带入结构的实例分析

在明确基于Python 语言的数据结构运行原理和列表构建情况之后,需要结合社保大数据领域对Python数据结构应用提出的具体需求,探讨以LIST 列表和SET 列表方式对数据进行处理的实际效果。Python 本身是一种高效的编程语言,能够顺应当前软件开发的主要趋势,满足基于计算机系统的大数据技术应用创新以及优化的要求。结合前文对于LIST 和SET 两种列表的数据结构方式分析,将这两种数据结构方式代入到社保大数据领域,最主要的目的就是通过数据结构方式的对比,基于社保大数据领域的具体应用要求,为提升社保服务选择更合适的Python 数据结构类型。

结合当前社保服务工作开展的主要内容和具体要求,在将与社保相关的数据带入到Python 脚本程序和数据结构时,需要考虑当前社会发展中需求最为密集的社保种类,即跨统筹区或跨险种的数据应用和处理情况。在这一方面,考虑到政务服务对于社保数据处理和提升社保服务质量水平的要求,企业养老保险、机关养老保险以及城乡居民养老保险等不同方面的数据信息,通常以Excel 的形式储存在社保部门相对应的不同科室当中,且单一的表格数据信息量就较为庞大。

为验证本文中提到的应用Python 语言对数据表文件进行批处理以及LIST 和SET 列表构建方法的有效性,在实际分析中选取10000 机关养老待遇的人员信息以及10000 城乡居民养老待遇的人员信息,以对比的方式,分析应用Python 数据结构所展现的对于数据分析处理的性能优势以及实际的运行情况。

具体而言,在对相应数据进行处理的过程中,需要将10000 人的两类数据源分别输入到两个LIST 列表中,基于FOR 循环代码来实现对于相关数据的便利比对。整个遍历过程涉及到的运行代码如下:

而在分别将10000 人的两类数据源输入到两个SET列表之后,则需要基于intersection 函数的方式来对数据的交集进行求解计算:

starttime=datetime.datetime.now()

newdata=set(dt).intersection(set(dt1))

finishtime=datetime.datetime.now()

print('SET 用时:%s'%(finishtime-starttime))

在分别对应用两种列表方式得到的数据交集结果进行验证之后,发现LIST 的最大运算次数为20000 次,用时为1.12630778 秒,而应用SET 结构得到的最大运算次数为一亿次,用时为0.00001993 秒。结合这一数据的计算结果来看,相较于LIST,SET 列表在基于Python 语言和数据结构的前提下,能够呈现出更大的应用优势。

为进一步探讨SET 列表的数据结构方式应用原理和性能效果,主要从随机访问的角度出发,展示验证基于查找算法的LIST 抽象源码运行情况:

def serach For Key (self, key):

temp = self.head

while temp != None:

if temp.value == key:

return True

temp = temp.next

return False

在一个未排列的数据序列中,如果序列共有10、11、12、8、9、12、14 七个整数值,在设定查找13 这一Key 值的前提下,需要从序列的开头部分以循环比对的方式进行查找,在查找得到的数据不匹配的情况下,需要通过temp=temp.next 的操作来进入下一个节点,继续进行循环比对的操作。当循环比对过程中查找到正确的Key 值,就会返回Ture 进而跳出循环。由此可以发现,在应用LIST 列表的算法进行数据查找和索引时,需要利用遍历函数,遍历整个序列中的数据才能够匹配到具体的数值。考虑到实际数据索引和分析处理的需求,通常应用这一列表方式来满足查找具有顺序敏感性的数据,并引入平均查找复杂度这一概念来保证数据查找的精确性与效率效果。

而在应用SET 列表的情况下,基于哈希算法的SET 抽象源码运行情况如下:

def serach For Key(self, key):

hash Value=self.Compute Hash(key)

temp=hash Value%7

if self.Arr[temp]==key:

return True

elif False

结合前面的分析可以发现,在应用SET 列表进行数据分析处理的情况下,需要借助哈希算法来省略进行循环查找的步骤,直接通过一次寻址的方式就可以得到相应的查找结果。在结合以上抽象源码运行情况之后可以发现,以构建SET 列表的方式,能够在得到一个基于7 个整数值的集合之后,通过ComputeHash 函数来验证查找对象所对应的哈希值,在此基础上通过哈希算法来对哈希值进行计算,进而得到相对应的哈希表中的索引位置数据。如果得到的索引位置数据与需要寻找的Key值相同,就可以直接成功返回。在这一数据索引和处理分析的过程中,SET 本身的规模大小以及数据结构的复杂程度不会对数据的索引和查找产生影响。在理想的情况下,应用SET 列表查找数据表文件中的任何数据,都只需要查找一次,就可以借助哈希算法来实现数据比对。

3 结论

综上所述,将Python 的数据结构应用到社保大数据领域,能够有效提升对于各项社保信息的处理效率,提升服务水平。针对以社保服务为代表的各个行业和领域中涉及的数据分析处理需求,应用Python 数据结构,需要在明确数据结构本身运行原理的基础上,充分发挥SET 数据结构的作用优势,以代入社保相关数据的方式来验证数据结构的有效性,明确脚本程序的执行流程,确保提升社保数据的处理和应用效率。

猜你喜欢

批处理数据表脚本
酒驾
恶意批处理文件导致电脑黑屏、反复重启、无响应的原因分析及应对思路
基于列控工程数据表建立线路拓扑关系的研究
数据库系统shell脚本应用
快乐假期
图表
基于PSD-BPA的暂态稳定控制批处理计算方法的实现
基于VSL的动态数据表应用研究