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实现监控windows服务并自动启动服务示例
Apr 17 Python
python获取本机外网ip的方法
Apr 15 Python
Django自定义插件实现网站登录验证码功能
Apr 19 Python
python数据处理实战(必看篇)
Jun 11 Python
Python使用plotly绘制数据图表的方法
Jul 18 Python
Python基于plotly模块实现的画图操作示例
Jan 23 Python
在python下读取并展示raw格式的图片实例
Jan 24 Python
python3中eval函数用法使用简介
Aug 02 Python
基于Python执行dos命令并获取输出的结果
Dec 30 Python
pytorch 准备、训练和测试自己的图片数据的方法
Jan 10 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 Python
基于Python爬取51cto博客页面信息过程解析
Aug 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
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
JS简单的图片放大缩小的两种方法
2013/11/11 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
在浏览器中打开或关闭JavaScript的方法
2015/06/03 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
Python版的文曲星猜数字游戏代码
2013/09/02 Python
记录Django开发心得
2014/07/16 Python
在Python的Flask框架中实现单元测试的教程
2015/04/20 Python
Django开发中复选框用法示例
2018/03/20 Python
python for 循环获取index索引的方法
2019/02/01 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
Django Rest framework解析器和渲染器详解
2019/07/25 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
支票、地址标签、包装纸和慰问卡:Current Catalog
2018/01/30 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
暑假社会实践心得体会
2014/09/02 职场文书
邀请函范文
2015/02/02 职场文书
大学军训决心书
2015/02/05 职场文书
被委托人身份证明
2015/08/07 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers