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爬取网页的编码处理
Nov 04 Python
python 系统调用的实例详解
Jul 11 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
python使用Tesseract库识别验证
Mar 21 Python
解决Matplotlib图表不能在Pycharm中显示的问题
May 24 Python
Python实现的读写json文件功能示例
Jun 05 Python
TensorFlow打印tensor值的实现方法
Jul 27 Python
从0开始的Python学习016异常
Apr 08 Python
python pycharm的安装及其使用
Oct 11 Python
使用Python文件读写,自定义分隔符(custom delimiter)
Jul 05 Python
容易被忽略的Python内置类型
Sep 03 Python
Python爬虫开发与项目实战
Dec 16 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+mysql实现用户注册登陆的方法
2015/01/03 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
JS检测图片大小的实例
2013/08/21 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
vue实现搜索功能
2019/05/28 Javascript
Vuex新手的理解与使用详解
2019/05/31 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
Python入门_学会创建并调用函数的方法
2017/05/16 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
Python3多线程基础知识点
2019/02/19 Python
Python绘图实现显示中文
2019/12/04 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
财务经理的岗位职责
2013/12/17 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
国王的演讲观后感
2015/06/03 职场文书
导盲犬小Q观后感
2015/06/11 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
微信小程序scroll-view不能左右滑动问题的解决方法
2021/07/09 Javascript
CentOS安装Nginx并部署vue
2022/04/12 Servers