pandas分批读取CSV并分批处理数据

当面临服务器内存不足和大型CSV数据集的矛盾时,传统的全量加载方式不再适用。通过pandas的read_csv()函数,可以利用'nrows'和'skiprows'参数实现分批读取和处理数据,避免一次性加载全部数据。例如,设定'nrows'读取行数,'skiprows'跳过行数,以分批次进行数据操作,有效缓解内存压力。此方法适用于处理大文件,且最后一个分组不足'nrows'时,会处理剩余数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法工程师要面对的一大主要矛盾:不够用的服务器内存和巨大的训练集数据量之间的矛盾。

如果使用pandas处理CSV数据,会先把整个CSV加载到内存之后再处理,所以如果你的CSV文件巨大(其实也不一定非常大,我的数据集只有4、50个G,可惜当时服务器内存只有60多个G了),就要想其他方法了。

我之前都是把CSV文件手动切分成10个小文件,再逐个处理。

现在觉着这方法太傻了啊。

其实pandas 读取CSV文件的函数 read_csv() 中自带两个参数就可以解决:

nrows=
skiprows=

其中前者控制本次读取多少行,后者用于控制跳过多少行然后从其下一行开始读。

这样每次就只读取 nrows 行数据加载到内存,先处理这部分数据,处理完之后再去加载下一批。

备注:

如果最后一个分组不够 nrows 的参数值也不会报错,会把剩余部分当做一个分组。比如CSV文件中有5行数据,每次读两行数据,即 nrows=2,最后只剩下一行,就把这一行当做一组。

以上,问题解决~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值