行与思多源数据预处理,Python能

白癜风精细诊疗 http://news.39.net/bjzkhbzy/171020/5778256.html

随着大数据应用需求的不断增加和日渐复杂,如何能够较快,较方便的对海量的数据进行处理分析,以满足后续算法计算,数据分析的需求,是摆在大数据开发工程师,分析师,数据科学家面前的一个难题。Python作为一种通用性比较高的语言,学习和上手都比较容易,经过20多年的发展,各个社区和组织都使用Python开发了大量,多用途的扩展包,比如数据抓取,编码转换,可视化,数值分析计算等,这些库可以大大降低数据分析,开发工作的难度和强度。近年来Python也在大数据应用的各个环节有了广泛的应用,比如Spark中的PySpark及各种数据挖掘工具及机器学习的算法库,都可以看到Python的身影。

在公司实际的大数据项目中,我们要同时接入GPS,轨道交通刷卡,RFID通行记录等多类数据,这些数据最快每5分钟产生,最慢每月产生,数据的规模也从每日12G到每月30-40G,为了满足这些数据从供应商前置机通过FTP/UDP方式采集,预处理,统计分析,最终进大数据平台,开发团队经过技术选型,选择了Python作为这些环节处理程序的开发语言。

下面我们以实际项目中针对轨道刷卡数据的处理需求,来看下如何用Python完成数据预处理的工作。

-数据处理流程图-

1

数据采集

源数据每月传到前置机一次,每次大概30-40G,采用计划任务调度方式,调用数据采集程序进行处理。采集程序采用Python内置的shutil.copy方法将原始数据拷贝到采集服务器的工作目录。

-数据采集示例代码-

2

数据切分

一次30-40G的大文件,如果直接用Python来读取的话,除了读取速度巨慢无比外,将来处理服务器的内存占用会很大,极易发生崩溃,经过测试一般文件用Python读入内存,占用的内存大小为原始文件的2-3倍大小,项目中用的采集服务器内存只有32G,所以项目组采用了将文件切分解决方法,把大文件按照记录数,比如一次万进行切分,实际切分下来,一个月的文件,大致切分为15个,每个1.5-2GB左右。这样单个小文件读取进来不管是速度还是占用内存的大小都比较好,此处切分文件,使用Python直接调用操作系统的split命令完成,切分速度及效率都特别高,将30G的文件切开只需要几分钟。

-数据切分示例代码-

3

数据清理

数据切分后,需要按照数据的产生日期(按天),进行清理,主要操作有按照轨道卡编号及时间顺序进行排序,然后对无效,重复的数据进行清除,最后将结果数据按照日期(天)进行存储,此处采用了大量Python内置库的功能,比如排序sort,还有文件操作open及操作系统文件目录操作os包的较多功能。

-排序及去重操作示例代码-

-保存处理结果示例代码-

4

数据上载

经过处理清理后的程序,还需要上载到大数据平台中,供后续Spark模型来进行处理,这里采用Python调用hdfs命令的方式,完成结果数据到大数据平台的上载。

-数据上载示例代码-

经过上述流程后,我们就用Python完成了轨道卡数据的采集、清理及上载。数据清除及备份归档功能也通过Python来实现的。经过项目实践检验,我们对Python掌握更上一层楼。

这只是我们使用Python的一个例子。工欲善其事,必先利其器,Python在大数据圈中有很多现成工具,比如面向开发人员的Spark中的Pyspark,面向数据科学家及分析人员的IPythonnotebook,Pandas,NumPy等,涵盖科学计算,数据处理领域,还有Matplotlib用于数据可视化和Scikit-learn机器学习等。Python及其社区丰富的资源,是实现大数据应用的一把利器。

预览时标签不可点收录于合集#个上一篇下一篇

转载请注明:http://www.aierlanlan.com/cyrz/211.html