Python chunk读取超大文件

1. 普通文件读取方式:

import pandas as pd
df = pd.read_csv('./chunk_test.csv') # 默认 iterator=False,chunksize=None
print(df.shape,'\n',df.head())

一般使用read_csv的时候,iterator是设定为False的,这个时候read_csv会把整个文件的数据读取到DataFrame中,这样就会很吃内存。而当iterator被设置成True的时候,read_csv就会迭代读取数据,而不会一次性读取。这样就会返回一个TextFileReader的迭代器。

2. 大数据文本读取方式

# chunk 读取方式一  
reader = pd.read_csv('./chunk_test.csv', iterator=True)
chunksize=1000
chunk = reader.get_chunk(chunksize)  # 获取前1000条数据
print(chunk.shape,'\n',chunk.head(5))

 

# chunk 读取方式二    
reader = pd.read_csv('./chunk_test.csv', iterator=True, chunksize=1000) # 每1000条数据为一个chunk
for chunk in reader:
    print(chunk.shape,'\n',chunk.head(5))
    break

返回的reader是TextFileReader类型,它指向若干个chunk位置,只在访问数据的时候才真正把数据读入到内存。

这是一个可迭代的类型,采用for in的形式,即可逐个访问chunk。每个chunk都是dataframe类型的。

 

 

总结:

共有三种情况

iterator=False  将整个文件读入内存

iterator=True   chunksize=None   需要采用 chunk = reader.get_chunk(chunksize)  获取指定数量的数据 并返回一个dataframe

iterator=True   chunksize=1000   需要采用 for chunk in reader:  迭代获取dataframe 每个dataframe的行数为1000

 

 

Ref:

Python chunk读取超大文件 https://blog.csdn.net/w55100/article/details/90111254

Python如何读取、拆分大文件 https://www.jianshu.com/p/f935673ef524

pandas.read_csv参数整理 https://www.cnblogs.com/datablog/p/6127000.html

 

 

 

 

 

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值