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中使用pngquant压缩png图片的教程
Apr 09 Python
python使用append合并两个数组的方法
Apr 28 Python
基于wxpython实现的windows GUI程序实例
May 30 Python
RC4文件加密的python实现方法
Jun 30 Python
浅谈python字符串方法的简单使用
Jul 18 Python
Python 实现链表实例代码
Apr 07 Python
Python框架Flask的基本数据库操作方法分析
Jul 13 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
Feb 17 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
Mar 30 Python
基于python检查矩阵计算结果
May 21 Python
详细分析Python垃圾回收机制
Jul 01 Python
详解Python 最短匹配模式
Jul 29 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
深思 PHP 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
php后台程序与Javascript的两种交互方式
2009/10/25 PHP
PHP迅雷、快车、旋风下载专用链转换代码
2010/06/15 PHP
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
php中strtotime函数用法详解
2014/11/15 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
Prototype Date对象 学习
2009/07/12 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
2012/09/21 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
js+css实现超简洁的二级下拉菜单效果代码
2015/09/07 Javascript
JS Ajax请求如何防止重复提交
2016/06/13 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
js实现点击图片在屏幕中间弹出放大效果
2019/09/11 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
[01:07]DOTA2次级职业联赛 - Fpb战队宣传片
2014/12/01 DOTA
用Python配平化学方程式的方法
2019/07/20 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
应届毕业生个人求职自荐信
2014/01/06 职场文书
韩国商务邀请函
2014/01/14 职场文书
记帐员岗位责任制
2014/02/08 职场文书
QT与javascript交互数据的实现
2021/05/26 Javascript
Python实现单例模式的5种方法
2021/06/15 Python
Python实现照片卡通化
2021/12/06 Python
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android
Golang获取List列表元素的四种方式
2022/04/20 Golang