利用pandas的chunksize分块处理大型csv文件

17 篇文章 3 订阅
11 篇文章 3 订阅

利用pandas的chunksize分块处理大型csv文件

当读取超大的csv文件时,可能一次性不能全部放入内存中,从而无法加载,所以需要分块处理。

在read_csv中有个参数chunksize,通过指定一个chunksize分块大小来读取文件,返回的是一个可迭代的对象TextFileReader

import pandas as pd
''' chunksize:每一块有100行数据  iterator:可迭代对象 '''
reader = pd.read_csv('all_test.csv',chunksize=100,iterator=True)
count = 0;
# 可以使用for循环 对每一块的数据进行操作
for chunk in reader:
    '''
    可以对块中的某列数据进行操作 将每个chunk里面的时间戳变换成时间格式
    chunk['colunmn_name'] = pd.to_datetime(chunk['colunmn_name'],unit='s',origin=pd.Timestamp('2018-07-01')))
    
    可以对每一行数据进行操作
    for i in range(len(chunk)):
    '''
    count += 1
    if count ==1:
      	# 去除索引index
        chunk.to_csv('test.csv',index = False)
    elif count>1 and count<100:
      	# 去除索引index 和 列名header 以追加的方式添加mode
        chunk.to_csv('test.csv',index = False, mode = 'a',header = False)
    else:
        break
pd.read_csv('test.csv')

# 此外由于是可迭代对象 可取出前5行的数据观察
chunks = pd.read_csv('train.csv',iterator = True)
chunk = chunks.get_chunk(5)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值