首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用pandas读取大型csv文件?

如何使用pandas读取大型csv文件?
EN

Stack Overflow用户
提问于 2014-09-22 01:46:43
回答 13查看 350K关注 0票数 258

我正在尝试读取一个大的csv文件(aprox。6 GB),我得到一个内存错误:

代码语言:javascript
复制
MemoryError                               Traceback (most recent call last)
<ipython-input-58-67a72687871b> in <module>()
----> 1 data=pd.read_csv('aphro.csv',sep=';')

...

MemoryError: 

对此有什么帮助吗?

EN

回答 13

Stack Overflow用户

发布于 2014-09-22 01:54:03

该错误表明机器没有足够的内存一次将整个CSV读取到DataFrame中。假设您不需要一次性将整个数据集都放在内存中,避免该问题的一种方法是使用process the CSV in chunks (通过指定chunksize参数):

代码语言:javascript
复制
chunksize = 10 ** 6
for chunk in pd.read_csv(filename, chunksize=chunksize):
    process(chunk)

chunksize参数指定每个块的行数。(当然,最后一个块包含的行数可能少于chunksize。)

pandas >= 1.2

带有chunksizeread_csv返回一个上下文管理器,使用方法如下:

代码语言:javascript
复制
chunksize = 10 ** 6
with pd.read_csv(filename, chunksize=chunksize) as reader:
    for chunk in reader:
        process(chunk)

请参阅GH38225

票数 365
EN

Stack Overflow用户

发布于 2018-04-17 19:21:25

对于大数据l,建议使用"dask“库

例如:

代码语言:javascript
复制
# Dataframes implement the Pandas API
import dask.dataframe as dd
df = dd.read_csv('s3://.../2018-*-*.csv')

您可以从documentation here中阅读更多信息。

另一个很好的替代方案是使用modin,因为它的所有功能都与pandas相同,但它利用了分布式数据框库,如dask。

在我的项目中,另一个更好的库是datatables

代码语言:javascript
复制
# Datatable python library
import datatable as dt
df = dt.fread("s3://.../2018-*-*.csv")
票数 59
EN

Stack Overflow用户

发布于 2014-09-24 20:46:24

我是这样做的:

代码语言:javascript
复制
chunks=pd.read_table('aphro.csv',chunksize=1000000,sep=';',\
       names=['lat','long','rf','date','slno'],index_col='slno',\
       header=None,parse_dates=['date'])

df=pd.DataFrame()
%time df=pd.concat(chunk.groupby(['lat','long',chunk['date'].map(lambda x: x.year)])['rf'].agg(['sum']) for chunk in chunks)
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25962114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档