Python如何处理大数据?3个技巧效率提升攻略(推荐)

如果你有个5、6 G 大小的文件,想把文件内容读出来做一些处理然后存到另外的文件去,你会使用什么进行处理呢?不用在线等,给几个错误示范:有人用multiprocessing 处理,但是效率非常低。于是,有人用python处理大文件还是会存在效率上的问题。因为效率只是和预期的时间有关,不会报错,报错代表程序本身出现问题了~

所以,为什么用python处理大文件总有效率问题?

如果工作需要,立刻处理一个大文件,你需要注意两点:

01、大型文件的读取效率

面对100w行的大型数据,经过测试各种文件读取方式,得出结论:

with open(filename,"rb") as f:
 for fLine in f:
 pass

方式最快,100w行全遍历2.7秒。

基本满足中大型文件处理效率需求。如果rb改为r,慢6倍。但是此方式处理文件,fLine为bytes类型。但是python自行断行,仍旧能很好的以行为单位处理读取内容。

02、文本处理效率问题

这里举例ascii定长文件,因为这个也并不是分隔符文件,所以打算采用列表操作实现数据分割。但是问题是处理20w条数据,时间急剧上升到12s。本以为是byte.decode增加了时间。遂去除decode全程bytes处理。但是发现效率还是很差。

最后用最简单方式测试,首次运行,最简单方式也要7.5秒100w次。

想知道这个方式处理的完整代码是什么吗?扫描文末二维码,联系小编可以获取哦~

那么关于python处理大文件的技巧,从网络整理三点:列表、文件属性、字典三个点来看看。

1.列表处理

def fun(x):尽量选择集合、字典数据类型,千万不要选择列表,列表的查询速度会超级慢,同样的,在已经使用集合或字典的情况下,不要再转化成列表进行操作,比如:

values_count = 0
# 不要用这种的
if values in dict.values():
 values_count += 1
# 尽量用这种的
if keys,values in dict:
 values_count += 1

后者的速度会比前者快好多好多。

2. 对于文件属性

如果遇到某个文件,其中有属性相同的,但又不能进行去重操作,没有办法使用集合或字典时,可以增加属性,比如将原数据重新映射出一列计数属性,让每一条属性具有唯一性,从而可以用字典或集合处理:

 return '(' + str(x) + ', 1)'
list(map(fun,[1,2,3]))

使用map函数将多个相同属性增加不同项。

3. 对于字典

多使用iteritems()少使用items(),iteritems()返回迭代器:

>>> d = {'a':1,'b':2}
>>> for i in d.items() :
.... print i
('a',1)
('b',2)
>>> for k,v in d.iteritems() :
... print k,v
('a',1)
('b',2)

字典的items函数返回的是键值对的元组的列表,而iteritems使用的是键值对的generator,items当使用时会调用整个列表 iteritems当使用时只会调用值。

除了以下5个python使用模块,你还有什么技巧解决大文件运行效率的问题吗?深入了解更多Python实用模块,快速提升工作效率~

读写文件技术,今后会用到测试数据的参数化和测试报告写作功能中~

数据处理技术,今后测试脚本的测试数据处理过程可以用到~

数据统计分析技术,今后会在测试结果分析中用到

图表展示技术,在今后的测试框架中相关测试报告会用到

程序自动触发技术,可用于测试脚本程序的自动执行。

以上所述是小编给大家介绍的Python如何处理大数据?3个技巧效率提升攻略详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Python读大数据txt

    如果直接对大文件对象调用 read() 方法,会导致不可预测的内存占用.好的方法是利用固定长度的缓冲区来不断读取文件内容.即通过yield. 在用Python读一个两个多G的txt文本时,天真的直接用readlines方法,结果一运行内存就崩了. 还好同事点拨了下,用yield方法,测试了下果然毫无压力.咎其原因,原来是readlines是把文本内容全部放于内存中,而yield则是类似于生成器. 代码如下: def open_txt(file_name): with open(file_name

  • python分块读取大数据,避免内存不足的方法

    如下所示: def read_data(file_name): ''' file_name:文件地址 ''' inputfile = open(file_name, 'rb') #可打开含有中文的地址 data = pd.read_csv(inputfile, iterator=True) loop = True chunkSize = 1000 #一千行一块 chunks = [] while loop: try: chunk = dcs.get_chunk(chunkSize) chunks

  • 在Python中利用Pandas库处理大数据的简单介绍

    在数据分析领域,最热门的莫过于Python和R语言,此前有一篇文章<别老扯什么Hadoop了,你的数据根本不够大>指出:只有在超过5TB数据量的规模下,Hadoop才是一个合理的技术选择.这次拿到近亿条日志数据,千万级数据已经是关系型数据库的查询分析瓶颈,之前使用过Hadoop对大量文本进行分类,这次决定采用Python来处理数据: 硬件环境         CPU:3.5 GHz Intel Core i7         内存:32 GB HDDR 3 1600 MHz         硬

  • python 解决动态的定义变量名,并给其赋值的方法(大数据处理)

    最近消费kafka数据到磁盘的时候遇到了这样的问题: 需求:每天大概有1千万条数据,每条数据包含19个字段信息,需要将数据写到服务器磁盘,以第二个字段作为大类建立目录,第7个字段作为小类配合时间戳作为文件名,临时文件后缀tmp,当每个文件的写入条数(可配置,比如100条)达到要求条数时,将后缀tmp改为out. 问题:大类共有30个,小类不计其数而且未知,比如大类为A,小类为a,时间戳为20180606095835234,则A目录下的文件名为20180606095835234_a.tmp,这样一

  • Python3实现将本地JSON大数据文件写入MySQL数据库的方法

    本文实例讲述了Python3实现将本地JSON大数据文件写入MySQL数据库的方法.分享给大家供大家参考,具体如下: 最近导师给了一个yelp上的评论数据,数据量达到3.55个G,如果进行分析时直接使用本地文件,选择python来分析,那么效率是非常低的:另一方面使用SQL来储存文本文件最为安全,之前使用CSV,txt存储的文本文件最后莫名其妙地出现一些奇怪字符,导致读取数据分割时出现错乱.下面给出一个简单的代码,将本地JSON文件内容存入数据库. 说明:python版本为3.5,使用第三方库为

  • 为什么入门大数据选择Python而不是Java?

    马云说:"未来最大的资源就是数据,不参与大数据十年后一定会后悔."毕竟出自wuli马大大之口,今年二月份我开始了学习大数据的道路,直到现在对大数据的学习脉络和方法也渐渐清晰.今天我们就来谈谈学习大数据入门语言的选择.当然并不只是我个人之见,此外我搜集了各路大神的见解综合起来跟大家做个讨论. java和python的区别到底在哪里? 官方解释:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易

  • Python如何处理大数据?3个技巧效率提升攻略(推荐)

    如果你有个5.6 G 大小的文件,想把文件内容读出来做一些处理然后存到另外的文件去,你会使用什么进行处理呢?不用在线等,给几个错误示范:有人用multiprocessing 处理,但是效率非常低.于是,有人用python处理大文件还是会存在效率上的问题.因为效率只是和预期的时间有关,不会报错,报错代表程序本身出现问题了~ 所以,为什么用python处理大文件总有效率问题? 如果工作需要,立刻处理一个大文件,你需要注意两点: 01.大型文件的读取效率 面对100w行的大型数据,经过测试各种文件读取

  • python使用pandas处理大数据节省内存技巧(推荐)

    一般来说,用pandas处理小于100兆的数据,性能不是问题.当用pandas来处理100兆至几个G的数据时,将会比较耗时,同时会导致程序因内存不足而运行失败. 当然,像Spark这类的工具能够胜任处理100G至几个T的大数据集,但要想充分发挥这些工具的优势,通常需要比较贵的硬件设备.而且,这些工具不像pandas那样具有丰富的进行高质量数据清洗.探索和分析的特性.对于中等规模的数据,我们的愿望是尽量让pandas继续发挥其优势,而不是换用其他工具. 本文我们讨论pandas的内存使用,展示怎样

  • Python实现大数据收集至excel的思路详解

    一.在工程目录中新建一个excel文件 二.使用python脚本程序将目标excel文件中的列头写入,本文省略该部分的code展示,可自行网上查询 三.以下code内容为:实现从接口获取到的数据值写入excel的整体步骤 1.整体思路: (1).根据每日调取接口的日期来作为excel文件中:列名为"收集日期"的值 (2).程序默认是每天会定时调取接口并获取接口的返回值并写入excel中(我使用的定时任务是:linux下的contab) (3).针对接口异常未正确返回数据时,使用特殊符号

  • Python如何处理JSON数据详解

    目录 什么是JSON? JSON作用 为什么使用JSON JSON的使用 最后 什么是JSON? JSON是一种轻量级的数据交互格式,采用完全独立于编程语言的文本格式来存储和表示数据.和xml相比,它更小巧,但描述能力却不差,更适合于在网络上传输数据. JSON是一种有着特殊格式的字符串,格式与对象或者数组是非常类似的,只不过属性名是带双引号的. JSON用于对象和数组的序列化.(序列化:格式转换)用于对象和数组与字符串进行相互转换. JSON作用 与 XML一样,它是格式化数据的一种方式.We

  • 30个mysql千万级大数据SQL查询优化技巧详解

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则引擎将放弃使用

  • 利用python如何处理nc数据详解

    前言 这两天帮一个朋友处理了些 nc 数据,本以为很简单的事情,没想到里面涉及到了很多的细节和坑,无论是"知难行易"还是"知易行难"都不能充分的说明问题,还是"知行合一"来的更靠谱些,既要知道理论又要知道如何实现,于是经过不太充分的研究后总结成此文,以记录如何使用 python 处理 nc 数据. 一.nc 数据介绍 nc 全称 netCDF(The Network Common Data Form),可以用来存储一系列的数组,就是这么简单(参考

  • python里大整数相乘相关技巧指南

    问题 大整数相乘 思路说明 对于大整数计算,一般都要用某种方法转化,否则会溢出.但是python无此担忧了. Python支持"无限精度"的整数,一般情况下不用考虑整数溢出的问题,而且Python Int类型与任意精度的Long整数类可以无缝转换,超过Int 范围的情况都将转换成Long类型. 例如: >>> 2899887676637907866*1788778992788348277389943 5187258157415700236034169791337062

  • 大数据量分页存储过程效率测试附测试代码与结果

    测试环境 硬件:CPU 酷睿双核T5750 内存:2G 软件:Windows server 2003 + sql server 2005 OK,我们首先创建一数据库:data_Test,并在此数据库中创建一表:tb_TestTable 复制代码 代码如下: create database data_Test --创建数据库 data_Test  GO use data_Test GO create table tb_TestTable --创建表 (id int identity(1,1) pr

  • Python爬虫辅助利器PyQuery模块的安装使用攻略

    Windows下的安装: 下载地址:https://pypi.python.org/pypi/pyquery/#downloads 下载后安装: C:\Python27>easy_install E:\python\pyquery-1.2.4.zip 也可以直接在线安装: C:\Python27>easy_install pyquery pyquery是一个类似jquery的python库,可以使用像jquery那样的语法来提取网页中的任何数据,这个用于html网页的数据提取和挖掘还是一个很不

随机推荐