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爬虫
Dec 25 Python
Python新手实现2048小游戏
Mar 31 Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
Jun 22 Python
Django学习笔记之为Model添加Action
Apr 30 Python
Python 继承,重写,super()调用父类方法操作示例
Sep 29 Python
python3 mmh3安装及使用方法
Oct 09 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
Apr 20 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
May 07 Python
使用Keras 实现查看model weights .h5 文件的内容
Jun 09 Python
python接入支付宝的实例操作
Jul 20 Python
Python中itertools库的四个函数介绍
Apr 06 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加密解密的代码
2007/07/16 PHP
一个PHP缓存类代码(附详细说明)
2011/06/09 PHP
php类常量用法实例分析
2015/07/09 PHP
$()JS小技巧
2007/07/21 Javascript
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
jQuery中 prop() attr()使用详解
2015/05/19 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
angularjs 缓存的使用详解
2018/03/19 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
Django实现分页功能
2018/07/02 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
python面试题之列表声明实例分析
2019/07/08 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
Python模块future用法原理详解
2020/01/20 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
澳大利高级泳装品牌:Bondi Born
2018/05/23 全球购物
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
小学岗位竞聘方案
2014/01/22 职场文书
特色冷饮店创业计划书
2014/01/28 职场文书
小学校本培训方案
2014/06/06 职场文书
授权委托书
2014/07/31 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
RestTemplate如何通过HTTP Basic Auth认证示例说明
2022/03/17 Java/Android
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle