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中用字符串调用函数或方法示例代码
Aug 04 Python
Python2和Python3.6环境解决共存问题
Nov 09 Python
Python实现带下标索引的遍历操作示例
May 30 Python
python itchat实现调用微信接口的第三方模块方法
Jun 11 Python
通过 Django Pagination 实现简单分页功能
Nov 11 Python
python groupby 函数 as_index详解
Dec 16 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
Feb 20 Python
Pandas时间序列基础详解(转换,索引,切片)
Feb 26 Python
解决Jupyter无法导入已安装的 module问题
Apr 17 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
Sep 09 Python
python安装cx_Oracle和wxPython的方法
Sep 14 Python
Opencv实现二维直方图的计算及绘制
Jul 21 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
PHP新手上路(四)
2006/10/09 PHP
PHP Socket 编程
2010/04/09 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
php之可变函数的实例详解
2017/09/13 PHP
JS与框架页的操作代码
2010/01/17 Javascript
一些mootools的学习资源
2010/02/07 Javascript
JQuery 常用操作代码
2010/03/14 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
js判断ie版本号的简单实现代码
2014/03/05 Javascript
写出高效jquery代码的19条指南
2014/03/19 Javascript
前端必备神器 Snap.svg 弹动效果
2014/11/10 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
2019/09/19 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
vue-cli中实现响应式布局的方法
2021/03/02 Vue.js
Python中优化NumPy包使用性能的教程
2015/04/23 Python
Python实现优先级队列结构的方法详解
2016/06/02 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
python中dict使用方法详解
2019/07/17 Python
python3.8 微信发送服务器监控报警消息代码实现
2019/11/05 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
150行python代码实现贪吃蛇游戏
2020/04/24 Python
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
餐饮营销方案
2014/02/23 职场文书
经理岗位职责
2015/02/02 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
MySql学习笔记之事务隔离级别详解
2021/05/12 MySQL