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 struct模块解析
Jun 12 Python
使用Python的PEAK来适配协议的教程
Apr 14 Python
Python中使用asyncio 封装文件读写
Sep 11 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
小白如何入门Python? 制作一个网站为例
Mar 06 Python
python flask中静态文件的管理方法
Mar 20 Python
Python之两种模式的生产者消费者模型详解
Oct 26 Python
python里 super类的工作原理详解
Jun 19 Python
pycharm 批量修改变量名称的方法
Aug 01 Python
Python操作远程服务器 paramiko模块详细介绍
Aug 07 Python
Visual Studio code 配置Python开发环境
Sep 11 Python
Python中的特殊方法以及应用详解
Sep 20 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
Protoss兵种介绍
2020/03/14 星际争霸
php实现的MySQL通用查询程序
2007/03/11 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
解析link_mysql的php版
2013/06/30 PHP
ThinkPHP的L方法使用简介
2014/06/18 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
jquery中对表单的基本操作代码
2010/07/29 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
Vue.js中的组件系统
2019/05/30 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
Python抓取电影天堂电影信息的代码
2016/04/07 Python
Python中字符串的格式化方法小结
2016/05/03 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
python中的unittest框架实例详解
2021/02/05 Python
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
优秀村官事迹材料
2014/01/10 职场文书
纪念建党演讲稿范文
2014/01/13 职场文书
电脑饰品店的创业计划书
2014/01/21 职场文书
高一新生军训方案
2014/05/12 职场文书
女生抽烟检讨书
2014/10/05 职场文书
保研导师推荐信
2015/03/25 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
Go 中的空白标识符下划线
2022/03/25 Golang