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 相关文章推荐
进一步探究Python的装饰器的运用
May 05 Python
python递归删除指定目录及其所有内容的方法
Jan 13 Python
python数据清洗系列之字符串处理详解
Feb 12 Python
详解用Python处理HTML转义字符的5种方式
Dec 27 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
Dec 14 Python
用python打印1~20的整数实例讲解
Jul 01 Python
Python原始套接字编程实例解析
Jan 29 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
Python如何读取、写入JSON数据
Jul 28 Python
Python实战之OpenCV实现猫脸检测
Jun 26 Python
Python first-order-model实现让照片动起来
Jun 25 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
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
PHP 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
2020/03/10 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
Python3读取文件常用方法实例分析
2015/05/22 Python
Python的装饰器使用详解
2017/06/26 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
python add_argument()用法解析
2020/01/29 Python
Django如何批量创建Model
2020/09/01 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
Linux中如何用命令创建目录
2015/01/12 面试题
环境科学专业研究生求职信
2013/10/02 职场文书
大型活动组织方案
2014/05/10 职场文书
会计个人实习计划书
2014/08/15 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
素质拓展训练感想
2015/08/07 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书