京公网安备 11010802034615号
经营许可证编号:京B2-20210330
R实现大文本文件数据过滤的方法
使用R语言过滤文件数据是很普遍的操作,但有时我们会遇到比较大的文件,这类文件无法全部读入内存处理,需要采用分批读取、分批过滤、拼合结果的办法来解决。下面用一个例子来说明R实现大文件数据过滤的方法。
有个1G的文件sales.txt,存储着大量订单记录,请过滤出AMOUNT字段值在2000和3000之间的记录。该文件的列分割符为“\t”,前几行数据如下:
R语言解决方案
代码解读:
1行:打开文件句柄
2行:丢掉第一行,也就是列名。
3-4行:读入第一批的十万条数据,过滤后存入result。
5-8行:循环读数。每批次读入十万行数据,过滤后的结果追加到result变量,然后再读入下一批次。
9行:关闭文件句柄。
注意事项:
如果是小文件,则只需一句代码就能完成读数据的操作,第一行还可以设置为数据框的列名,但大文件不能这么实现,需要按批次读取数据,第二批的数据就无法将第一行设为列名了,默认列名会是V1、V2、V3…….。
为了实现大文件按批次读数据,必须使用while语句来实现算法,列名的使用也不够方便,这就使整个代码稍显复杂。
替代方案:
同样的算法也可以用Python、集算器、Perl等语言来解决本案例。和R语言一样,这几种语言都可以实现文件数据的过滤以及结构化数据的计算,下面简单介绍集算器和Python的解决方案。
集算器会自动分批处理数据,程序员无需用循环语句手工控制,因此代码非常简洁:
cursor是集算器中用于结构化数据计算的数据类型,和数据框的用法差不多,但对大文件和复杂计算更擅长。另外,cursor可以用@t选项将文件的第一行读为列名。
Python的代码结构和R差不多,也是手工控制循环,但python本身缺乏数据框或cursor等结构化数据类型,因此代码更底层些:
result = []
myfile = open("E: \\sales.txt",'r')
BUFSIZE = 10240000
myfile.readline()
lines = myfile.readlines(BUFSIZE)
value=0
while lines:
for line in lines:
record=line.split('\t')
AMOUNT=float(record[3])
if (AMOUNT>=2000 and AMOUNT<=3000):
result.append(record)
lines = myfile.readlines(BUFSIZE)
myfile.close()
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
【核心关键词】贷款、报表、课程、专业、建模、缺失值、营销、互联网、银行、办公自动化、数据分析、数据预处理、特征工程、贷 ...
2026-06-05在数据库数据查询、业务报表统计、多表关联分析中,LEFT JOIN左连接是使用率最高的SQL关联查询语句。其核心特性是保留左表全部数 ...
2026-06-05 很多数据分析师能熟练地写SQL、做透视表、算描述性统计,但当被问到“如何预测用户流失概率”“如何归因销量下滑的关键因素 ...
2026-06-05任何一款产品从诞生、普及到最终退出市场,都会遵循一套固定的发展规律,这就是产品生命周期理论。在市场竞争日益激烈、产品迭代 ...
2026-06-04在Excel数据分析、办公统计、业务报表制作场景中,数据透视表是数据汇总、分类统计、快速复盘的核心工具,能够高效完成海量原始 ...
2026-06-04 很多数据分析师拿到数据就开始清洗、建模,但当被问到“这批数据属于什么类型——结构化还是非结构化?分类变量还是数值变量 ...
2026-06-04在问卷调查与社会科学数据分析中,卡方检验是最常用、最基础的非参数检验方法,广泛应用于市场调研、用户分析、行为统计、满意度 ...
2026-06-03【核心关键词】贷款、报表、课程、专业、建模、缺失值、营销、互联网、银行、办公自动化、数据分析、数据预处理、特征工程、贷 ...
2026-06-03 很多数据分析师画过趋势图、做过业绩预测,但当被问到“这个月销售额增长20%,到底是长期趋势自然增长,还是促销活动的短期 ...
2026-06-03逻辑回归是数据分析、机器学习、统计建模中应用最广泛的二分类预测模型,常用于风险判断、行为预测、归因分析等场景。在SPSS、Py ...
2026-06-02数字经济时代,市场竞争日趋同质化,用户消费需求愈发个性化、多元化,传统依托经验、粗放式、广撒网的营销模式弊端日益凸显。长 ...
2026-06-02 很多数据分析师做过按月份的销售额趋势图,画过按天的流量折线图,但当被问到“时间序列和普通数据有什么本质区别”“季节性 ...
2026-06-02在市场竞争日趋饱和、用户需求不断细分的当下,企业创业创新、产品迭代与市场拓展不再依赖经验决策,而是需要系统化、工具化的商 ...
2026-06-01【核心关键词】调度、岗位、数据库、企业、报表、培训、程序、数据分析、数据加工、业务部门、企业数据、调度工具、业务指标、 ...
2026-06-01 很多数据分析师能熟练地计算指标、搭建标签体系,但当被问到“画像到底在解决什么问题”“画像和标签是什么关系”“画像如何 ...
2026-06-01在数据统计分析、数据清洗、异常值识别与数据分布研究中,箱型图是最直观、高效、专业的可视化分析工具。相较于柱状图、折线图仅 ...
2026-05-29Tkinter是Python内置的标准GUI图形界面库,具备无需额外安装、调用简单、兼容性强、轻量化高效等优势,是Python快速开发桌面小程 ...
2026-05-29 很多分析师在设计标签时思路清晰,但真到落地环节却面临“数据在手,不知如何转化为可用标签”的困境:或因加工方式选择不当 ...
2026-05-29【核心关键词】大数据、经理、专业、金融、客户、传统、建模、数据产品、互联网金融、产品经理、数据分析、金融行业、数据模型 ...
2026-05-28 很多分析师每天和数据打交道,但当被问到“标签是什么”“标签和指标有什么区别”“标签体系如何设计”时,却常常答不上来。 ...
2026-05-28