Python语言在大数据处理中的应用

2021-07-26 01:19叶惠仙游金水
网络安全技术与应用 2021年5期
关键词:源代码爬虫代码

◆叶惠仙 游金水

(1.福建农业职业技术学院 福建 350007 2.福建省职业技术教育中心 福建 350001)

在大数据时代,如何充分挖掘出蕴藏于数据资源中的价值正在成为各国IT 业界、学术界和政府共同关注的焦点。使用大数据技术应用于各行各业来分析行业情况与事件趋势已经成为共识并且得到了广泛应用。随着数据信息资源的不断层阶梯式增多,提高大数据分析技术就变得非常重要,而Python 正是这个重要的大数据应用辅助工具,其功能强大、操作简单、逻辑语法易懂易读、代码高效。所以将Python 应用到大数据挖掘、清理、分析、可视化中非常有必要。不仅如此,Python 语言数据分析库功能齐全,并且还提供了十分丰富的API 和工具,以便程序员能够轻松地使用C 语言、C++、Python来编写自己所需的扩充模块。本文通过阐述Python 在大数据应用技术过程中的阶段应用,来体现Python 相较于其他语言在大数据应用技术中的优势。

1 大数据应用

随着互联网技术的发展,信息技术与人类生活中的政治、经济、军事、科研、医疗、生活等方方面面不断交织融合,并且随着时间流逝,这个数据量将呈阶梯式的冗积。这也正是大数据技术渗透到社会各个方面的最好体现。大数据技术的发展已在以下几个方面得以体现:

(1)物联网:把所有物品通过信息传感设备与互联网连接起来,进行信息交换,以实现智能化识别和管理。

(2)智慧城市:运用信息和通信技术手段感测、分析、整合城市运行核心系统的各项关键信息;并对包括民生、环保、公共安全、城市服务、工商业活动在内的各种需求做出智能响应。

(3)增强现实(AR)与虚拟现实(VR):它利用计算机生成一种模拟环境,让用户创建和体验一种多源信息融合的、交互式的三维动态视景和实体行为的虚拟世界的计算机仿真系统。

(4)区块链技术:是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。

(5)语音识别技术:语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。

(6)人工智能(AI):人工智能需要被汇入很多信息才能进化,进而产生一些意想不到的结果。是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。

(7)数字汇流:就是“内容”与“电子商务”的汇流[1]。

大数据成为时代发展一个必然的产物,而这些数据犹如是蕴藏能量的煤矿资源,从性质上可分为焦煤、无烟煤、肥煤、贫煤等,这些煤矿的挖掘成本又不相同。而大量数据的分析过程如性质不同的煤矿,挖掘成本也不尽相同,如何将这些“大”数据挖掘出“大”价值才是赢得竞争的关键。而大数据时代,一切可量化,一切可分析。

2 Python 语言较其他常用语言的优势

Python 语言逻辑人性化、代码编写人性化、编程速度高效人性化。是人类思维与计算机思维的时代性的结合,完全适应和符合现代计算机技术发展水平,简化了多种文本的操作,对中文有良好的支持,还兼容多种数据类型并灵活表达集合长度。而C 语言有指针、地址等复杂的结构元素;Java 语言对于变量须手动定义才可使用。Python语言提供了十分丰富的API 和工具,以便程序员能够轻松地使用C语言,C++,Cython 来编写扩充模块。Python 编译器本身也可以被集成到其他需要脚本语言的程序内。其中大量函数库编写功能广、质量高、如数组计算库NumPy、图像绘制库matplotlib、计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK 等。

Python 语言是一个脚本语言,可直接通过运行源代码来运行脚本程序,这使得脚本程序运行与源代码不可分离。代码十分简洁易懂,主要支持面向对象与面向过程这种程序设计方法,不要求程序一定要通过函数封装,代码行数简洁,是C 语言同样功能的代码行数的1/5到1/10。以每种语言的入门输出“Hello World”为例:

Python 语言的源代码程序就只有一行:

Print("Hello World!")

而通过C 语言编写的程序需要先引入main()函数,同样功能的程序运行源代码如下:

此外,Python 语言还可以编译绘制图形界面的程序,代码同样十分简洁。例如下面所展示的可执行程序源代码可以通过画笔在一笔一画之间绘制出一棵树的形状:

(代码运行注意缩进)运行结果如下图1所示:

图1 树形程序示例输出图

从上面两个简单程序的实例可以看出,Python 语言与C 语言,Java 语言等相比起来能够更好支持代码图形化输出、使用更少的程序源代码、更接近于自然语言逻辑的语法习惯。

3 Python语言在大数据处理中的应用

3.1 获取数据资源

大数据之所称之大就是基于被分析的数据庞大,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine)如Yahoo 和Google 等可辅助检索数据信息,但存在着一定的不足,搜索引擎所返回的结果信息量涉及方方面面,没有归类,针对性不强;导致搜索引擎服务器资源与无限的网络数据资源之间的冲突;针对通用性搜索引擎存在的问题,定向抓取面向特定主题需求的网页资源的聚焦爬虫应运而生,他在实施网页抓取时尽量保证只抓取与需求相关的网页信息并进行处理筛选。根据需要的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL 队列[2]。所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索。

3.2 Python 爬虫scrapy 框架

Scrapy 是利用Python 语言编写的网络爬虫框架。一个目的为了爬取网站内容,提取结构性数据而编写的开源爬虫应用框架。可以运用在包括数据挖掘,信息处理或者存储历史数据等一系列的程序中。Scrapy 最初的设计目的是页面抓取,也可以是用来获取各种API 返回的数据[3]。在scrapy 项目中,只需写入定制的爬虫规则、运行即可快速获得所需要的数据信息。

爬取网页内容代码如下:

创建Scrapy 爬虫框架需要在Python 的控制台中输入创建命令,也可以通过UI 图形界面点击创建。例如,创建一个爬取电影数据信息的Scrapy 爬虫项目的命令如下:

scrapy startproject film

3.3 数据清理

数据清理,用于检测和纠正、删除表或数据库中的不准确或损坏的记录。数据清除是指识别不正确,不完整,不相关或其他有问题(“脏”)的数据部分,然后替换,修改或删除该脏数据。

(1)删除不需要的观测值。

在数据收集过程中,最常见的是重复观察或多余的观察。当从不同位置组合数据集或从客户端接收数据时,随着数据的重复,这种观察会大大影响效率,并且可能会增加正确或不正确的因素,从而产生不忠实的结果。例如,在手写数字识别领域,扫描错误(例如污迹或非数字字符)是无关紧要的观察结果。这样的观察结果是没有用的数据,可以直接删除。

(2)修复数据集中的结构错误。

结构错误是指在测量,数据传输过程中的印刷错误、具有不同名称的相同属性、贴错标签的类,大小写不一致等。例如模型应将错字和大小写不一致(例如“BBBb”和“BBBB”)视为同一个类别,而不是两个不同的类别。

(3)处理丢失的数据。

收集到的数据信息中有一个重要的是“缺少数据”。不能简单地忽略数据集中的缺失值,须以某种方式处理丢失的数据。如删除具有缺失值的观察值或者根据过去或其他观察结果估算缺失值。

3.4 Python 数据分析

Python 语言数据分析库目前非常广泛,从科学计算领域的Numpy 和Scipy 到Web 上的Django 和基于Web 的用于创建可视化的工具箱Plotly 到Seaborn,及专注于统计模型的的Seaborn。其中Numpy 和Pandas 使用频率较高。

Numpy 是一个基于Python 的开源工具库,支持多种数值运算。最重要的功能是该工具可以支持具有强大计算能力的大量矩阵数据操作。numpy 提供了多种数学计算工具,可用于实现强大的数学函数,例如线性代数[4]。pandas 也是在Python 的基础上开发的,该数据分析工具包是在Numpy 的基础上。它提供的一维数组(series)和二维表数据结构(DataFrame)是其核心数据模型。该数据包集成了常用的数据分析功能。例如,Pandas 库可用于在二维数据表结构(DataFrame)中汇总简单的数据统计信息,包括具有最高值,平均值和正态分布的数据。数据预处理和分析结合了Pandas 和Numpy 工具包来有效地处理数据集。在统计计算结果之后,可通过清洗数据,缺失的处理和消除噪音等操作进一步提取有价值的数据集。而且Pandas 还具有大量的内置库和一些标准数据模型,特别是对于非常高效和快速的大规模数据处理。例如,要处理数千万行的CVS 数据,使用字典处理大约需要2 分钟,而pandas 需要不到10 秒,并且使用的代码行也更少。在掌握并学习了如何使用这些数据分析库之后,Python 将成为当前市场上大数据分析的首选。除了这些库之外,Python 还具有各种软件包资源,例如人工智能和神经网络。

3.5 数据可视化操作

数据可视化的主要目的是使图形方式清晰有效地传达信息。 关键方面和功能的直观交流使您能够对相对稀疏和复杂的数据集进行详细的洞察。 开发人员需要能够掌握设计和功能之间的平衡,以便创建引人注目的数据可视化并实现信息传达与沟通的效果。

(1)Python 可视化模块

Python 中的可视化工具包括常规软件工具和某些软件组件。 通用软件工具是集成开发环境(IDE),特定软件绘图组件是Python 绘图库,例如Bokeh,iPython,Matplotlib,Scipy,Numpy,Scikit-learn和Seaborn。Plotly 是一种在线分析和数据可视化工具。提供用于绘图,分析和统计。该工具基于Python,具有一个用户界面,该用户界面使用JavaScript 和由D3.js,HTML 和CSS 制成的可视化库。包含兼容多语言的科学制图库,例如Arduino,Julia,MATLAB,Python和R.最常见的可视化类型包括以下类别:比较和排名,相关性,分布,位置定位或地理数据,随时间变化的趋势等。

(2)Python 数据可视化处理

Python 有很多绘图包,Matplotlib 是个专门针对于数据绘图功能设计的第三方库,其pyplot 子库主要用于进行各类型数据展示图形的绘制。Matplotlib 库将绘图所需的各种方法和功能都封装在函数中,为用户提供了操作和使用上更加友好的接口。通过Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,雷达图条形图,错误图,散点图等[5]。即使是绘制图形,Python 的代码仍旧简短、简洁、简单,另初学者都能轻易看懂读懂。以雷达图为例,随即抽样了某大学一年级五位学生在五项科目考试成绩的数据,经过数据清理,使用Python 来绘制多级雷达图,即在一组同心圆上填充绘制不规则五边形,其每个顶点到圆心的距离代表分院学生的每个科目的成绩。程序运行源代码如下:

运行结果如图2所示。

图2 大学生成绩雷达图

大学生科目成绩为5 个属性,设置属性标签radar_labels,并预设各人成绩汇总数据。np.concatenate()函数用于将数据和角度的数组首尾闭合,便于调用plot()。图形保存格式为Python 可支持的PNG类型,最后通过show()函数显示图形,默认图形文件保存路径与代码保存路径相同。

一个简单的雷达图便成功实现,使我们更加直观地观察各个学生的成绩情况。Python 数据可视化可以作用于广阔的社会中各种各类的问题。在大数据时代,大规模、高纬度、非结构化的数据层出不穷[6]。Python 具有超大型图像、纯色、高亮度、高分辨率等优点。数据信息的实时更新,实现了数据的实时图形可视化、场景可视化和实时交互,使使用者能够更简单明了的理解数据信息。

4 大数据处理中Python 语言的不足

在大数据的背景下,使用Python 完成数据挖掘,清理和分析功能可以获取大量具有一定真实性和准确性的信息,利用大数据本身的应用价值,进行相关工作的探索和进一步信息参考,但是,Python语言和大数据的结合仍然有些不足,例如:

(1)数据资源的收集和保护水平有待提高。一些数据采集和存储未标准化,完整性和质量相对较差,记录数据的标准化需要改进。。

(2)在某些地区,大数据和Python 的集成度不高,在互联网和金融等行业也很好地适应了这一点。但是,一些传统行业,例如教育和文化,没有明显的优势。

当完全了解Python 函数库的各种应用方法后,Python 便成为大数据技术应用程序的最合适方法。越来越多的人意识到Python 语言本身的应用价值,将Python 应用于大数据处理的人数将持续增长。

5 小结

随着大数据技术在生活各个领域的不断发展,数据信息资源的范围也在不断扩大。只有通过挖掘,分析和过滤大量数据信息资源,才能发现大量数据信息的内在作用。大数据时代下用Python 语言爬取,分析,处理数据的意义更加突显,Python语言在大数据处理实践中深深扎根,让大数据的应用价值更加精彩。

猜你喜欢
源代码爬虫代码
利用网络爬虫技术验证房地产灰犀牛之说
基于TXL的源代码插桩技术研究
基于Python的网络爬虫和反爬虫技术研究
创世代码
创世代码
创世代码
创世代码
软件源代码非公知性司法鉴定方法探析
大数据背景下校园舆情的爬虫应用研究
基于语法和语义结合的源代码精确搜索方法