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系列之数据处理编程实例(二)
May 22 Python
Linux下用Python脚本监控目录变化代码分享
May 21 Python
让python在hadoop上跑起来
Jan 27 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 Python
python tornado修改log输出方式
Nov 18 Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 Python
Django多进程滚动日志问题解决方案
Dec 17 Python
学python爬虫能做什么
Jul 29 Python
python归并排序算法过程实例讲解
Nov 04 Python
python中altair可视化库实例用法
Jan 26 Python
python中tkinter复选框使用操作
Nov 11 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生成短网址的思路以及实现方法的详解
2019/03/25 PHP
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
jQuery 阴影插件代码分享
2012/01/09 Javascript
document.createElement()用法
2013/03/13 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
Three.js利用性能插件stats实现性能监听的方法
2017/09/25 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
node.js基础知识小结
2018/02/26 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
[08:04]TI4西雅图DOTA2前线报道 海涛探访各路人马
2014/07/09 DOTA
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
2017/07/11 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
对python中的高效迭代器函数详解
2018/10/18 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
JNI的定义
2012/11/25 面试题
工商学院毕业生个人自我评价
2013/09/19 职场文书
领班岗位职责范文
2014/02/06 职场文书
美容院营销方案
2014/03/05 职场文书
中学校庆方案
2014/03/17 职场文书
岗位明星事迹材料
2014/05/18 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
欢迎家长标语
2014/10/08 职场文书
世界遗产导游词
2015/02/13 职场文书
MySQL快速插入一亿测试数据
2021/06/23 MySQL
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server
详解Vue3使用axios的配置教程
2022/04/29 Vue.js