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实现猜数字游戏(无重复数字)示例分享
Mar 29 Python
python检测是文件还是目录的方法
Jul 03 Python
Python使用filetype精确判断文件类型
Jul 02 Python
python logging日志模块的详解
Oct 29 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
Mar 08 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 Python
python调用百度REST API实现语音识别
Aug 30 Python
python中的json总结
Oct 11 Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 Python
Python之列表实现栈的工作功能
Jan 28 Python
python3连接kafka模块pykafka生产者简单封装代码
Dec 23 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禁止浏览器使用缓存页面的方法
2014/11/07 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
Knockoutjs的环境搭建教程
2012/11/26 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
简单的代码实现jquery定时器
2013/11/17 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
jQuery中 prop() attr()使用详解
2015/05/19 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
JS数组操作中的经典算法实例讲解
2017/07/26 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
详解python内置模块urllib
2020/09/09 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
三星英国官网:Samsung英国
2018/09/25 全球购物
草船借箭教学反思
2014/02/03 职场文书
金融专业毕业生自荐信
2014/06/26 职场文书
司机个人年终总结
2015/03/03 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL