Python 数据分析之逐块读取文本的实现


Posted in Python onDecember 14, 2020

背景

《利用Python进行数据分析》,第 6 章的数据加载操作 read_xxx,有 chunksize 参数可以进行逐块加载。

经测试,它的本质就是将文本分成若干块,每次处理 chunksize 行的数据,最终返回一个TextParser 对象,对该对象进行迭代遍历,可以完成逐块统计的合并处理。

示例代码

文中的示例代码分析如下:

from pandas import DataFrame,Series
import pandas as pd
 
path='D:/AStudy2018/pydata-book-2nd-edition/examples/ex6.csv'
# chunksize return TextParser
chunker=pd.read_csv(path,chunksize=1000)
 
# an array of Series
tot=Series([])
chunkercount=0
for piece in chunker:
	print '------------piece[key] value_counts start-----------'
	#piece is a DataFrame,lenth is chunksize=1000,and piece[key] is a Series ,key is int ,value is the key column
	print piece['key'].value_counts()
	print '------------piece[key] value_counts end-------------'
	#piece[key] value_counts is a Series ,key is the key column, and value is the key count
	tot=tot.add(piece['key'].value_counts(),fill_value=0)
	chunkercount+=1
 
#last order the series
tot=tot.order(ascending=False)
print chunkercount
print '--------------'

流程分析

首先,例子数据 ex6.csv 文件总共有 10000 行数据,使用 chunksize=1000 后,read_csv操作返回一个 TextParser 对象,该对象总共有10个元素,遍历过程中打印 chunkercount验证得到。

其次,每个 piece 对象是一个 DataFrame 对象,piece['key'] 得到的是一个 Series 对象,默认是数值索引,值为 csv 文件中的 key 列的值,即各个字符串。

将每个 Series 的 value_counts 作为一个Series,与上一次统计的 tot 结果进行 add 操作,最终得到所有块数据中各个 key 的累加值。

最后,对 tot 进行 order 排序,按降序得到各个 key 的值在 csv 文件中出现的总次数。

这里很巧妙了使用 Series 对象的 add 操作,对两个 Series 执行 add 操作,即合并相同key:key相同的记录的值累加,key不存在的记录设置填充值为0

输出结果为:

Python 数据分析之逐块读取文本的实现

到此这篇关于Python 数据分析之逐块读取文本的实现的文章就介绍到这了,更多相关Python 逐块读取文本内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Django的模型和公用函数中使用惰性翻译对象
Jul 27 Python
分享Python文本生成二维码实例
Jan 06 Python
Python3.4编程实现简单抓取爬虫功能示例
Sep 14 Python
利用Python读取txt文档的方法讲解
Jun 23 Python
使用numba对Python运算加速的方法
Oct 15 Python
python用for循环求和的方法总结
Jul 08 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
Python BeautifulReport可视化报告代码实例
Apr 13 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
Pycharm导入anaconda环境的教程图解
Jul 31 Python
Django路由层如何获取正确的url
Jul 15 Python
Python 全局空间和局部空间
Apr 06 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 #Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 #Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 #Python
python中time、datetime模块的使用
Dec 14 #Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 #Python
python读写数据读写csv文件(pandas用法)
Dec 14 #Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 #Python
You might like
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
php 生成随机验证码图片代码
2010/02/08 PHP
PHP+MYSQL会员系统的开发实例教程
2014/08/23 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
javascript prototype 原型链
2009/03/12 Javascript
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
vue后台管理之动态加载路由的方法
2018/08/13 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
详解vue使用插槽分发内容slot的用法
2019/03/28 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
Python检测QQ在线状态的方法
2015/05/09 Python
python实现简单购物商城
2016/05/21 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
建筑专业自荐信范文
2014/01/05 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
python中filter,map,reduce的作用
2022/06/10 Python