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操作列表的常用方法分享
Feb 13 Python
Python中设置变量作为默认值时容易遇到的错误
Apr 03 Python
简单了解Python下用于监视文件系统的pyinotify包
Nov 13 Python
Python队列的定义与使用方法示例
Jun 24 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
Pyspider中给爬虫伪造随机请求头的实例
May 07 Python
Django基础三之视图函数的使用方法
Jul 18 Python
Python猴子补丁知识点总结
Jan 05 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
Oct 15 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 Python
python必学知识之文件操作(建议收藏)
May 30 Python
Python3.10的一些新特性原理分析
Sep 15 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
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
javascript 缓冲运动框架的实现
2017/09/29 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
利用python获得时间的实例说明
2013/03/25 Python
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
深入解析Python中的上下文管理器
2016/06/28 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
小学开学寄语
2014/01/19 职场文书
接待员岗位责任制
2014/02/10 职场文书
土地转让协议书
2014/09/27 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
国产动画《万圣街》日语配音版制作决定!
2022/03/20 国漫
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android