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


Posted in Python onApril 15, 2019

如果你有个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个技巧效率提升攻略详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python 文件与目录操作
Dec 24 Python
使用基于Python的Tornado框架的HTTP客户端的教程
Apr 24 Python
Python实现优先级队列结构的方法详解
Jun 02 Python
Python正则表达式如何进行字符串替换实例
Dec 28 Python
带你了解python装饰器
Jun 15 Python
Python 2.7中文显示与处理方法
Jul 16 Python
50行Python代码获取高考志愿信息的实现方法
Jul 23 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
Python判断字符串是否为空和null方法实例
Apr 26 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
使用OpenCV实现人脸图像卡通化的示例代码
Jan 15 Python
PyTorch 如何设置随机数种子使结果可复现
May 12 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 #Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
Apr 15 #Python
10招!看骨灰级Pythoner玩转Python的方法
Apr 15 #Python
Python后台开发Django会话控制的实现
Apr 15 #Python
浅析Python 实现一个自动化翻译和替换的工具
Apr 14 #Python
提升Python程序性能的7个习惯
Apr 14 #Python
Python根据当前日期取去年同星期日期
Apr 14 #Python
You might like
PHP中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
laravel5.1 ajax post 传值_token示例
2019/10/24 PHP
form中限制文本字节数js代码
2007/06/10 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
2013/09/27 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
基于jquery插件实现拖拽删除图片功能
2020/08/27 Javascript
js中开关变量使用实例
2017/02/24 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
2018/05/16 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
40行代码把Vue3的响应式集成进React做状态管理
2020/05/20 Javascript
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
线程的基本概念、线程的基本状态以及状态之间的关系
2012/10/26 面试题
行政管理人员精品工作推荐信
2013/11/04 职场文书
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
洗车工岗位职责
2014/03/15 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
环保守法证明
2015/06/24 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
创业计划书详解
2019/07/19 职场文书
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫
HttpClient实现表单提交上传文件
2022/08/14 Java/Android
mysql通过group by分组取最大时间对应数据的两种有效方法
2022/09/23 MySQL