python 处理大量数据_菜鸟利用python处理大文本数据的血泪路

标签:

1. 源数据 Like this:

格式: .csv和.txt

内容:(几十万行)

大小:64.7M 和64.8M

电脑:i5-2540M 4G内存

%E6%8D%95%E8%8E%B7.PNG

%E6%8D%95%E8%8E%B72.PNG

2.数据更新检测:

这是一些位置信息图,1和2分别是同一地区不同时期采集的数据,现检测更新的信息。假使以NDP_ID这列数据作为POI的唯一标志码。设定:

如果NDP_ID同时在两个文件中都存在,则判定为没有改变

如果NDP_ID只存在于1文件中,则判定为信息删减了

如果NDP_ID只存在于2文件中,则判定为信息增加了

3.代码主要包括三部分:

- 文件路径的读取,获得批量文件

- 文件的读取与存储

- 变化检测

但是在试验中遇到最大的问题是程序处理的时间很漫长:

程序版本 1M数据 65M数据

第一代for循环白痴程序: 60s ——

第二代列表解析程序: 40s ——

第三代改变数据存储结构: 25S ——

第四代改变key值类型: 12S ——

第五代有序列表查找: 0S 300S

不是我闲的没事,而是前几个版本的代码跑起65的数据遥遥无期,于是开始查找哪里耗时低,以及python代码书写风格。后来发现在文件遍历比较的时候耗时最大,瓶颈也在于这里,于是开始慢慢分析复杂度:

一代:复杂度m*n*3

%E6%8D%95%E8%8E%B73.PNG

二代:复杂度 m*n*3

%E6%8D%95%E8%8E%B73-.PNG

三/四代:复杂度

%E6%8D%95%E8%8E%B75.PNG

五代:复杂度m+n

%E6%8D%95%E8%8E%B76.PNG

事实证明列表解析确实高效于for循环,字典查询优于普通遍历,但是最最能显著提高速度的还是改变算法降低复杂度。代码优美性无助于提高效率。

继续优化下!

标签:

原文地址:http://www.cnblogs.com/I-Tegulia/p/4554822.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值