利用python如何处理百万条数据(适用java新手)


Posted in Python onJune 06, 2018

1、前言

因为负责基础服务,经常需要处理一些数据,但是大多时候采用awk以及java程序即可,但是这次突然有百万级数据需要处理,通过awk无法进行匹配,然后我又采用java来处理,文件一分为8同时开启8个线程并发处理,但是依然处理很慢,处理时长起码在1天+所以无法忍受这样的处理速度就采用python来处理,结果速度有了质的提升,大约处理时间为1个小时多一点,这个时间可以接受,后续可能继续采用大数据思想来处理,相关的会在后续继续更新。

2、安装python 

第一步首先下载python软件,在官网可以根据自己情况合理下载,大家也可以通过三水点靠木进行下载其余就是下一步搞定,然后在开始里面找到python的exe,点击开然后输入1+1就可以看出是否安装成功了.如下图

利用python如何处理百万条数据(适用java新手) 

3、IEDA编辑器如何使用python

首先我们在idea中打开设置然后点击plugins,在里面有个输入框中输入python,根据提示找到如下的这个(idea版本不同可能影响python版本)

利用python如何处理百万条数据(适用java新手) 

然后开始创建idea工程

file->New->Project->python然后出现如下图情况(其他的下一步然后就会创建工程了)

利用python如何处理百万条数据(适用java新手)

4、开发前知识准备

文件的读取,python读取文件非常的简单,我现在直接贴代码提供给大家

def readData(fileName):
 result = ""
 count=0
 with open(fileName, 'r') as f:
 for line in f.readlines():
  result += line
  count += 1
  print count
 return result

"""写入文件"""

def writeData(fileName, data):
 with open(fileName, 'a+')as f:
 f.write(data)

其中def是函数的定义,如果我们写定义一个函数直接前面加上def,返回值可以获取后直接用return即可

python我们直接采用with open('文件路径',模式) as f的方式来打开文件

模式:

r 只读 文件不存在则出错
r+ 支持读写 文件不存在则出错,写入时,会覆盖源文件
w 只写 如果文件不存在则创建文件,会覆盖源文件,如果写入内容少则保留为覆盖的内容
w+ 支持读写 同上
a 只写 如果文件不存在则创建文件,会采用追加模式
a+ 读写 同上
b 二进制读写  

跨文件引用:

同一个层级python是采用import直接导入文件名的方式,看下一个代码

import IoUtils

fileName1 = 'D:\\works\\pythons\\files\\userids.txt'
userIds = IoUtils.readData(fileName1).split('\n')
fileName2 = 'D:\\works\\pythons\\files\\records.txt'
records = IoUtils.readData(fileName2).strip()
recordsArr = records.split('\n')
count=0;
for data in recordsArr:
 count+=1
 if data.split('\t')[2] in userIds:
 IoUtils.writeData('D:\\works\\pythons\\files\\20180604.txt', data + '\n')
 print count

其他说明:

其中split和java程序的split一样,strip是去掉空格换行符等,循环(for in)模式,判断某个元素是否在数组中存在则直接使用 元素 in 数组

5、总结

如果你有数据量级别在百分的时候我建议优先可以想到python处理真的特别方便,而且很简单学习成本也很低,但是却很实用,其实awk在数据处理中也发挥很大的作用,大家可以私下学习,如果有时间我会分享一些,关于数据我这里就不提供了大家可以按照我上述代码跑就可以,更细节的我推荐看廖雪峰的python教程。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python的Django框架中设置日期和字段可选的方法
Jul 17 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
python3的输入方式及多组输入方法
Oct 17 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
Django中使用极验Geetest滑动验证码过程解析
Jul 31 Python
Django中的FBV和CBV用法详解
Sep 15 Python
python二分法查找算法实现方法【递归与非递归】
Dec 06 Python
Python基于Socket实现简单聊天室
Feb 17 Python
Python AutoCAD 系统设置的实现方法
Apr 01 Python
matplotlib jupyter notebook 图像可视化 plt show操作
Apr 24 Python
序列化Python对象的方法
Aug 01 Python
利用Pycharm连接服务器的全过程记录
Jul 01 Python
Python3实现的Mysql数据库操作封装类
Jun 06 #Python
python操作redis方法总结
Jun 06 #Python
目前最全的python的就业方向
Jun 05 #Python
python多进程提取处理大量文本的关键词方法
Jun 05 #Python
使用python进行文本预处理和提取特征的实例
Jun 05 #Python
python 用正则表达式筛选文本信息的实例
Jun 05 #Python
python和shell获取文本内容的方法
Jun 05 #Python
You might like
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
2014/10/30 Javascript
nodejs下打包模块archiver详解
2014/12/03 NodeJs
js实现简单的可切换选项卡效果
2015/04/10 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
JS字符串false转boolean的方法(推荐)
2017/03/08 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
python交互式图形编程实例(二)
2017/11/17 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
python能做什么 python的含义
2019/10/12 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
以下的初始化有什么区别
2013/12/16 面试题
生物制药专业自我鉴定
2014/02/19 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
实习指导教师评语
2014/12/30 职场文书
2015年考研复习计划
2015/01/19 职场文书
挂职锻炼个人总结
2015/03/05 职场文书
演讲开场白台词大全
2015/05/29 职场文书
《鲸》教学反思
2016/02/23 职场文书