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实现数独算法实例
Jun 09 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
python爬虫入门教程--快速理解HTTP协议(一)
May 25 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
Jul 04 Python
python3+PyQt5使用数据库表视图
Apr 24 Python
Python随机函数random()使用方法小结
Apr 29 Python
详解Django的CSRF认证实现
Oct 09 Python
通过python爬虫赚钱的方法
Jan 29 Python
基于python框架Scrapy爬取自己的博客内容过程详解
Aug 05 Python
python读取mysql数据绘制条形图
Mar 25 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
Jun 02 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 30 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抽象工厂模式(Elgg)
2010/03/21 PHP
php读取3389的脚本
2014/05/06 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
2016/10/08 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
jquery中获取id值方法小结
2013/09/22 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
vue跨域解决方法
2017/10/15 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
简单的三步vuex入门
2018/05/20 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
[01:44]Ti10举办地公布
2019/08/25 DOTA
21行Python代码实现拼写检查器
2016/01/25 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
基于并发服务器几种实现方法(总结)
2017/12/29 Python
python-str,list,set间的转换实例
2018/06/27 Python
set在python里的含义和用法
2019/06/24 Python
Python中如何添加自定义模块
2020/06/09 Python
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
自我反省检讨书
2014/01/23 职场文书
生物科学专业职业规划书范文
2014/02/11 职场文书
恐龙的灭绝教学反思
2014/02/12 职场文书
工伤事故证明
2014/10/20 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
政工师工作总结2015
2015/05/26 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL