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 enumerate遍历数组示例应用
Sep 06 Python
使用cx_freeze把python打包exe示例
Jan 24 Python
python中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 Python
使用Python下的XSLT API进行web开发的简单教程
Apr 15 Python
Python有序字典简单实现方法示例
Sep 28 Python
Python实现string字符串连接的方法总结【8种方式】
Jul 06 Python
对python多线程中Lock()与RLock()锁详解
Jan 11 Python
python实现广度优先搜索过程解析
Oct 19 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
解决python 执行sql语句时所传参数含有单引号的问题
Jun 06 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
python 标准库原理与用法详解之os.path篇
Oct 24 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仿discuz分页效果代码
2008/10/02 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
PHP之短标签开启设置
2013/06/17 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
js精度溢出解决方案
2012/12/02 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
2014/07/02 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
介绍Python中的文档测试模块
2015/04/28 Python
使用Python读取大文件的方法
2018/02/11 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
python集合的新增元素方法整理
2020/12/07 Python
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
模范教师事迹材料
2014/02/10 职场文书
高中教师评语大全
2014/04/25 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
导游词之麻姑仙境
2019/11/18 职场文书