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中__call__方法示例分析
Oct 11 Python
python实现在字符串中查找子字符串的方法
Jul 11 Python
python3+PyQt5实现自定义分数滑块部件
Apr 24 Python
Python一句代码实现找出所有水仙花数的方法
Nov 13 Python
python批量下载网站马拉松照片的完整步骤
Dec 05 Python
Python集中化管理平台Ansible介绍与YAML简介
Jun 12 Python
Linux下升级安装python3.8并配置pip及yum的教程
Jan 02 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
Feb 12 Python
Python找出列表中出现次数最多的元素三种方式
Feb 24 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
python学习将数据写入文件并保存方法
Jun 07 Python
Python爬虫如何破解JS加密的Cookie
Nov 19 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
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
网页图片延时加载的js代码
2010/04/22 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
js性能优化技巧
2015/11/29 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
JS中的==运算: [''] == false —>true
2016/07/24 Javascript
浅谈jquery页面初始化的4种方式
2016/11/27 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
在JavaScript中使用严格模式(Strict Mode)
2019/06/13 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
python基于SMTP协议发送邮件
2019/05/31 Python
python集合删除多种方法详解
2020/02/10 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
python中round函数保留两位小数的方法
2020/12/04 Python
python 录制系统声音的示例
2020/12/21 Python
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
Footshop乌克兰:运动鞋的最大选择
2019/12/01 全球购物
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
公司捐款倡议书
2014/05/14 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书