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彩色化Linux的命令行终端界面的代码实例分享
Jul 02 Python
Python制作刷网页流量工具
Apr 23 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 Python
关于反爬虫的一些简单总结
Dec 13 Python
python os用法总结
Jun 08 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
python通过txt文件批量安装依赖包的实现步骤
Aug 13 Python
解决python 3 urllib 没有 urlencode 属性的问题
Aug 22 Python
基于keras输出中间层结果的2种实现方式
Jan 24 Python
pytorch对梯度进行可视化进行梯度检查教程
Feb 04 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
May 03 Python
python爬虫请求头设置代码
Jul 28 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
做一个有下拉功能的留言版
2006/10/09 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
能说明你的Javascript技术很烂的五个原因分析
2011/10/28 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
Bootstrap实现的标签页内容切换显示效果示例
2017/05/25 Javascript
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
Python网络爬虫与信息提取(实例讲解)
2017/08/29 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
Python3.6简单的操作Mysql数据库的三个实例
2018/10/17 Python
python3学生名片管理v2.0版
2018/11/29 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
Python数据可视化实现正态分布(高斯分布)
2019/08/21 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
jupyter实现重新加载模块
2020/04/16 Python
python的json包位置及用法总结
2020/06/21 Python
CSS3教程(8):CSS3透明度指南
2009/04/02 HTML / CSS
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
平面设计师工作职责范文
2013/12/03 职场文书
物业保安员岗位职责
2014/03/14 职场文书
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
合作意向协议书
2015/01/29 职场文书
数学备课组工作总结
2015/08/12 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python
解决vue中provide inject的响应式监听
2022/04/19 Vue.js
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis