APP下载

基于Python语言的数据分析处理研究

2022-11-11程俊英

电子技术与软件工程 2022年15期
关键词:爬虫数据处理数据挖掘

程俊英

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

1 Python语言的数据分析处理过程

从技术特性来看,Python语言具有面向对象的优势,在数据分析处理中通过该技术可以完全面向函数、模块、数字、字符串等,并且能够支持重载运算符与动态类型,为了实现这一功能,Python语言的数据处理可以按照以下技术流程来解读。

1.1 数据集成

在数据处理中,通过Python语言可以将分散在不同运维数据库中的数据整合在一起,将不同领域的数据经DBLINK等连接在数据库中,在后续的数据处理中即可直接从数据库中提取原始资料。在数据集成中,通过将目标数据做连续采集后,通过集成的方法可以采集数据的特征值,现阶段相关学者提出通过大数据等技术处理方法对数据做深度集成,利用大数据技术所提供的数据处理过程来观察数据的演化趋势,所集成的数据可以用于后续的数据深加工。

1.2 数据抽取

当原始记录被存储在运维数据库中之后,通过Python语言可以直接将原始数据库导入到CSV文件中,通过Python语言支持的“to-csv”方法将CSV格式文件指向内存区,之后根据数据多次处理的需求,可将数据库中感兴趣信息提取出来,并将其转变为数据流形式(或者根据数据处理要求写入硬盘格式)。例如在模型数据源处理中,将产品ID、业务代码、业务受理时间等数据整合在一起。此时在数据抽取过程中应考虑以下几方面问题:

(1)所抽取的数据应该可以适用于不同的业务场景,但是要避免盲目扩大业务数据处理范畴;

(2)避免干扰业务系统正常运行。因此为实现这一目标,则可以按照图1的技术7流程来抽取数据。

图1:基于Python语言的数据抽取技术流程

1.3 数据清理

数据清理的主要目的是对原始数据做第二次加工,在Python语言处理中需要清除与原始数据不一致的资料,最终提升数据库的数据质量。同时考虑到数据处理的基本要求,在Python语言处理中所有未竣工或者作废的数据流程都应该先消除,此时数据清理中可以通过以下过程做进一步加工,包括识别数据库的异常数据、填补数据中存在缺失数据、对数据做除噪处理等。

根据相关学者的研究可知,在数据处理中若任意一条业务数据流程缺失,那么在相关业务流程聚类分析期间应先忽略该记录,并删除数据库中所有缺失属性值的数据[1]。为了实现该目标,在本次研究中选择在Python语言基础上增设lambda函数,根据函数演变过程检查缺失值,此时在函数处理中发现数列中存在若干个缺失的属性值来删除无属性的数据。

1.4 数据转换

经过数据清理之后,数据库中不合格数据消失,之后即可将数据做进一步加工,将其转变为满足聚类划分方式的数据。例如在数据处理中可根据系统聚类处理目标来提取其中的特征值,例如在汽车的数据处理中,可以将汽车的品牌等信息等相关属性做进一步聚类,直至满足数据挖掘的要求。

1.5 数据挖掘

基于Python语言的数据挖掘通常采用分类分析的方法,通过学习获得的目标函数将特定属性集映射至预先设定的类标号中,根据数据库的分析学习获得分类模型,根据叶贝斯网络所提供的不确定性问题处理能力,根据条件概率计算不同信息要素之间的关系,最终在有限的、不完整的信息中完成推理与学习[2]。

2 基于Python语言的数据挖掘

为满足数据分析处理的功能要求,本文在Python语言的基础上引入了scrapy爬虫技术(下文简称爬虫技术)通过两个技术之间的结合可以显著强化Python语言的数据处理能力,拓展数据的应用范围。

2.1 网络爬虫框架

网络爬虫技术是指通过设定好的规则,在网络上完成信息数据抓取的程序或者脚本。现阶段Python语言技术不断拓展,需要适应海量来自Web网页中的数据源,因此运用网络爬虫技术可以为数据分析处理提供数据集,保障了处理效果。为满足Python语言的应用要求,在本次网络爬虫技术设计中对该技术作出新的界定,需要包含诸多功能,其对应的框架资料如表1所示。

表1:网络爬虫框架资料表

2.2 爬行过程设计

为满足Python语言的数据处理要求,本文对网络爬虫的爬行过程做出新的设计,具体过程如下:

步骤1:配置“urls”后,界定网络爬虫爬行过程中的初始目标,即可控制爬虫爬行。

步骤2:在引擎上设定初始爬取的地址目标,在系统操作过程中调整组件的网络请求,并根据数据处理要求调度响应过程。

步骤3:下载器模块获得请求信息后即可通过其他功能模块向对应的网络地址请求数据,此时所有响应的对象都可以通过下载器组件发送给功能引擎。

步骤4:对下载的数据做数据体解析,获得信息实体,将信息实体推送至对应处理模块进一步加工;此时爬虫重复步骤1至步骤3的全部操作过程,直至无法挖掘数据即可。

步骤5:通过对数据的清洗、数据有效性验证以及数据持久化处理等方法,将识别的有用信息存入数据库中用于下一阶段处理。

步骤6:在持续循环上述过程,则产生响应的数据均被成功解析,系统完成操作。

通过上述技术步骤过程,在Python语言数据分析处理中,工作人员可以通过网络爬虫技术完成数据分析处理,数据处理效率更高,并且在经过多次爬虫处理后,数据分析处理精准度会明显提升,这是传统技术所难以实现的[3]。

同时在网络爬虫爬行过程设计中,根据不同抓取目标可以根据预处理数据的目标特性来进行编辑,此时的基本过程为:

(1)设定需要抓取的种子样本流程;

(2)将给定的数据做分类,设定对应的数据样本结构;

(3)根据数据特性抓取目标样例,例如根据用户日志挖掘关键数据资料等。

2.3 数据挖掘数据库的实现

Python语言在数据处理中对数据库提出了更高的要求,在本次研究中考虑到网络爬虫爬行的要求,在构建数据库过程中应考虑到不同数据库的适用性。有学者研究指出,当使用爬虫技术从网络上获取数据之后,受到网络数据异构性等因素影响,传统数据库无法存储网络上不同格式的数据,所以可以选择noSQL非关系型数据库来存储数据,这是因为此类数据库具有高可用性以及高可拓展性的特征,其数据模型结构更加灵活多样,并且数据读写难度低,符合Python语言的数据处理要求[4]。

基于上述情况,本文使用pymongo数据库,该数据库可以与本地以及远程服务器对接,当网络爬虫获取数据之后,所有数据以文档的形式直接存入到文档中并导入数据库。该数据库的后续处理难度低。在后续的操作中也可以在数据库中对数据资料做增删改查等操作。同时值得关注的是,连接该数据库的难度小,只需要几行代码即可满足功能设定要求,这也是Python语言所带来的便利。

3 基于Python语言的数据分析处理应用实例

为深入判断本文所介绍方法的可行性,本文将基于某招聘信息网站,对基于Python语言的数据分析处理过程展开深入分析。

3.1 信息采集

在数据采集过程中,针对数据分析处理中需要面对多元化的冗余信息,在数据源数据筛选过程中,通过过滤其中的重复数据来提升数据处理效果。以公司的招聘信息为例,在相同的岗位上可能存在多个招聘数据,但是招聘数据在时效性上存在一定差异,所以在数据采集中应重点提取最新的招聘信息数据。同时在兼顾准确性相关要求的基础上,确保所采集的数据可以描述不同维度信息,这是提升数据质量的关键点。

3.1.1 爬取信息采集的实现路径

根据数据处理过程可以发现,在招聘信息数据挖掘与分析中通过点击“进入详情页”可以查阅与岗位相关的信息,所以在数据爬取阶段通过采集所有与招聘相关的信息资料后,打造出源数据集。

本次研究中数据采集的环境与工具的相关信息包括:windows 10运行平台、语言工具:Python 3.6.4语言、爬虫框架crapy。

在本次实例分析中发现,在整个数据分析处理中较为关键的步骤,就是在网页中设定元素分析节点,这关乎数据分析处理的最终结果,该模块应该具有快速解读“html”文件的功能,并且可以在dom结构中快速定位目标信息所对应的dom节点,并在短时间内存取数据内容。所以本文将借助元素选择器Xpath来实现上述功能。该选择器支持在爬取数据过程中,将解读的树状结构信息按照不同节点信息结构进行分类,即属性节点、文本节点与元素节点,这样在数据处理中即可按照对应的数据类型快速查询节点信息,并通过不同路径将其对应到对应的页面节点上,最后通过对数据进行整理即可获得需要的元数据资料。

通过审查页面源码信息获得页面dom结构信息,此时在网络爬虫数据挖掘中即可获得本次数据分析处理的数据内容,如招聘页面的链接、招聘条目名称以及详情页等资料。

在数据分析结束后,即可编写网络爬虫项目对应的spider模块,具备的操作步骤流程为:

步骤1:选取需要进行爬虫爬行的初始页面,在“urls”属性中填写页面的url值。

步骤2:在确定后续自动爬取的页数之后,通过“_init_”方法将后续爬取的页数添加至实例中。之后在后续的爬虫爬行过程中,可以按照实例中对应的页码数来修改数值控制翻页后网络爬虫的爬行过程。

步骤3:将url请求后返回的数据进行加工(采用parse方法),处理后可以获得页面链接等关键资料的解析结果,并且在保障有效链接的基础上持续请求详情页数据,可以按照指定callback指令返回数据并回调控制函数,这样可以用于返回数据的进一步加工。

步骤4:在经过回调函数处理后即可获得网络爬虫返回信息,通过在返回信息上的加工获得对应的“xpath”路径信息,同时在返回值中提取关键数据信息。在经过上述处理后即可将其绑定至对应的属性框架中,减少下一阶段数据处理的操作难度。

步骤5:在获取所有页面信息之后,此时spider组件的工作流程完成,之后即可做数据格式重组以及录入数据库等系统操作。

3.1.2 数据格式设计与数据存储

为满足Python语言数据处理要求,所有数据都可以做格式转换,再将其存储至不同数据库中,所以在本次设计中通过对上述数据整合,经网络爬虫挖掘后的数据直接上传至数据库中,此时编辑后的数据支持数据挖掘以及转存等操作要求。此时可以根据所挖掘数据的信息特征,可以将不同属性信息以对应的数据形式存入到数据库中,以“招聘人数”为例,其对应的json数据结构为"person":"String"。

在确定数据结构后即可连接数据库,此时通过在模块中引入数据库模式,通过在数据库之间建立连接即可转存。

3.2 数据的预处理

在Python语言数据处理环节,数据的预处理是其中的重点内容,通过预处理可以将采集的数据转变为可以识别的信息数据。

3.2.1 数据清洗

数据清洗的关键点包括:

(1)数据采集错误。本环节的主要目的是对网络爬虫挖掘的数据进行分析,通过分析可以判断所挖掘数据是否正确。在本次操作中,可按照每一条数据对应的属性值判断其属性,这个操作过程为:①控制“mongodb”导出数据后,所有数据的格式为“csv”;②利用功能软件中将格式为“csv”数据做加工,载入数据值赋予变量data;③通过数据总数校验、数据列数校验等方法判断所采集数据资料的准确性。

上述数据采集错误评估中共设有10项数据属性,当所有属性显示采集合格后,则证明未发生数据采集错误的情况,可以做下一阶段的数据处理。

(2)离群点检测。开展离群点检测的主要目的,是清除严重偏离中心的数据,在处理后有助于保障建模数据的稳定性。例如在招聘信息数据分析处理中,可以针对招聘信息中的薪资进行处理,所以离群点检测的重点,是通过检测不同职位的薪资分布情况,并对离群点做进一步加工,上述处理过程包括:①获取视为类别信息,期间可以根据“data”查询不同数据列下的数据分布,此时考虑到每一职业的分析过程相同,只是对应的薪酬存在差异,因此本文随机以任意一个职位(以保洁员为例)进行描述。②在确定需要分析的招聘信息职位为保洁员后,通过“value_counts”方法统计对应的信息分布数据,根据汇总结果发现整个网站中关于保洁员的招聘信息达到了852条,其中频数为1的信息达到了37条,所占比例最小,无法体现数据集中存在的共享规律。因此系统可以认定该数据存在离群特性,在后续处理中直接删除即可。③重复上述过程,获得离散特性最不明显的数据后,随着数据处理过程的深入,所剩下的数据更具有共性与代表性,直至完成离群点检测。

(3)重复数据检测。①检查重复行数据。在本次数据处理中发现,重复数据的出现会严重影响Python语言数据处理结果,所以在数据清理阶段需要第一时间清除异常数据。为实现该目标,可利用duplicated方法检测其中的重复数据内容,通过遍历生成检测结果后,此时当系统测试结果显示为“True”时,系统控制台输出提示信息。整个操作过程中,因为在网络爬虫挖掘期间产生重复请求数据的操作后,通过删减重复的数据即可获得唯一的数据,组合成数据集后可以提升数据分析处理的精准度。②检查重复列信息。本次研究中所采集的数据中存在十条属性列,通过对属性列作逐一分析后即可发现其中有无重复描述的内容,例如在招聘数据分析中,可以发现“招聘条目”与“招聘职业”之间存在着重复描述的情况,这样上述两种数据都无法做有效的数据分类,因此为保障数据处理精度,可以选择直接删除上述条目信息。

3.2.2 数据变换

根据采集的数据集信息可以发现,所采集的数据值信息中呈现出多样化的特征,这种现象会显著增加数据分析处理的难度。所以为解决该问题,可以利用Python语言,根据不同数据的属性做出调整。以薪酬为例,在招聘信息上会将每月薪酬作为重点宣传内容,根据网络爬虫所挖掘的信息可以发现,薪酬属性的区间值不同,有<5000、5000~8000、8000~10000等诸多区间,并且在上述区间中存在大量不同等级的薪资,这种离散值无法清除,会导致后续建模中会创建大量分类,最终增加了数据维度,影响效率。针对这一问题,在本次数据处理中可将薪资范围字符串转变为有效数值信息,例如在上文介绍的“5000~8000”的收入岗位上,则可以取岗位的月薪的中间值为最终月薪制,再设定一定的增减幅度空间。在数值转换结束后,对所有薪资做区间再划分,而考虑到此阶段的薪资数据,可以将其重新划分基础条件,形成最终的月薪资料,并以薪资的平均值为中介线,再将其划分为A、B两个区间,在上述两个区间中分别规划五个等步长区间。在经过上述处理后,即可将薪资范围划分为十个区间单位,实现了对数据的进一步加工与分级。

3.2.3 新增特征值的处理

新增特征值处理是在数据规约基础上形成的一种可行手段,这是因为在数据处理中为了能够更好地描述数据分类,则需要利用不同数据维度的方式来精准定义数据,但是传统的数据种类划分难度高,有较高风险出现数据误差,这种现象无法满足数据处理的基本要求。所以寻找向数据中添加某些具有精准性与代表性的新特征值,通过新的特征值对数据做深加工,这是保证数据处理效果的关键点。

本次基于Python语言的数据处理过程是在数据模型的基础上完成的,为了可以更好地判断数据信息内容,可以在数据处理中增加新的评估项目,使分析结果更有代表性。例如在本次研究中主要分析招聘信息数据处理的问题,所以在新增特征属性时增加“招聘待遇”模块,该属性值主要以薪资待遇以及招聘职业等几个维度进行划分的。上述新增特征值的处理过程可以描述为:

(1)筛选出position为职业的所有数据;

(2)通过汇总筛选得出的数据,总结数据变化背后的规律。

3.3 建模处理

建模处理中使用决策树分类方法,该方法通过树状流程图描述信息,在该结构中,上层节点决定了下层节点的走向。

在决策树中包含三种节点,其中根节点代表无输入的边,但是存在若干条输出边,是决策的入手,可以根据根节点呈现出不同的路径选择与表达方式;内部节点。可以按照数据的不同属性对数据进行深层次划分,例如在招聘信息的数据处理中可以将“学历”、“工作经验”等作为内部节点,采用多条输出边做下一阶段延伸。最后是叶节点,只有一条输入边而没有输出边,代表着数据处理中的最终分析结果。

在决策树建模中,可以按照不同标准设定决策树走向,如工作经验小于等于3年时,从决策中的右侧内部节点处;之后进行学历分类,例如求职者的学历为大专,则可以走向左侧内部节点处;之后决策树显示公司规模信息,根据小、中、大、特大等标准依次分类。通过上述过程就完成了一次简单的数据分类。同时在建模期间,按照决策树方法可以采用“剪枝”等方法对模型内部结构做出调整,常见的剪枝方法主要分为:

(1)先剪枝方法。该方法是通过强行终止决策树的演变过程达到控制剪枝的目的。一般在做先剪枝处理后所有末节点将改变为子节点。通过这种方法可以控制决策树的高度,当决策树演变至该层次时即可停止。

(2)后剪枝。该方法是先构建决策树模型,当决策树构建结束后对模型评估,并采用剪枝的方法清除其中置信度不足的节点,或者用更高频率的子节点替换等,提升信息模型的精准度。

在建模处理过程中,采用sklearn可以降低建模难度,本次建模中主要通过训练集与测试集两个维度入手来判断其中的数据变化。根据现有的经验,在建模处理中如何实现构建高质量数据集是其中的关键点,本文主要利用“split”函数划分,具体的操作流程为:

from sklearn.tree import Decision Tree Classifier

from sklearn.cross_validation import train_test_split

处理的数据集以“#data”形式存在,在数据预处理后,剩余的数据总量明显下降,通过剩余的数据即可分离测试集与训练集。设定“test_size”为0.2后,按照4:1的比重划分训练集与测试集即可。

3.4 模型的测试

在建模后通过模型测试的方法判断Python语言的数据处理结果,期间为保证测试结果的精准性,本文引入混淆矩阵,混淆矩阵的生成方式为:

metrics.confusion_matrix(y_test,pre)

最终的测试结果显示,模型数据处理的错误率为2.15%,正确率97.85%,达到预期水平。

4 结束语

通过Python语言可以提升数据分析处理效果,作为一种简单、清晰的操作方法,该方法具有丰富的标准库与第三方库,功能强大,可以最大限度上满足数据分析的要求。在技术运用中通过Python语言与网络爬虫技术的整合可以优化数据挖掘过程,借助该方法可以通过不间断的数据处理与数据挖掘,完成不同类型的数据归类处理,展现出了明显的技术优势,并且本文在该技术模拟测试中发现,在利用Python语言构建模型后,该模型的数据处理误差率较低,准确率高,充分满足不同情况下的数据分析与处理需求,证明该技术科学有效,h值得推广。

猜你喜欢

爬虫数据处理数据挖掘
利用网络爬虫技术验证房地产灰犀牛之说
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
ILWT-EEMD数据处理的ELM滚动轴承故障诊断
基于Python的网络爬虫和反爬虫技术研究
利用爬虫技术的Geo-Gnutel la VANET流量采集
基于并行计算的大数据挖掘在电网中的应用
大数据环境下基于python的网络爬虫技术
一种基于Hadoop的大数据挖掘云服务及应用
基于希尔伯特- 黄变换的去噪法在外测数据处理中的应用
基于GPGPU的离散数据挖掘研究