相关疑难解决方法(0)

如何阅读带有pandas的6 GB csv文件

我试图在pandas中读取一个大的csv文件(aprox.6 GB),我收到以下内存错误:

MemoryError                               Traceback (most recent call last)
<ipython-input-58-67a72687871b> in <module>()
----> 1 data=pd.read_csv('aphro.csv',sep=';')

C:\Python27\lib\site-packages\pandas\io\parsers.pyc in parser_f(filepath_or_buffer, sep, dialect, compression, doublequote, escapechar, quotechar, quoting, skipinitialspace, lineterminator, header, index_col, names, prefix, skiprows, skipfooter, skip_footer, na_values, na_fvalues, true_values, false_values, delimiter, converters, dtype, usecols, engine, delim_whitespace, as_recarray, na_filter, compact_ints, use_unsigned, low_memory, buffer_lines, warn_bad_lines, error_bad_lines, keep_default_na, thousands, comment, decimal, parse_dates, keep_date_col, dayfirst, date_parser, memory_map, nrows, iterator, chunksize, verbose, encoding, squeeze, mangle_dupe_cols, tupleize_cols, infer_datetime_format)
    450                     infer_datetime_format=infer_datetime_format)
    451 
--> 452         return _read(filepath_or_buffer, kwds)
    453 
    454     parser_f.__name__ …
Run Code Online (Sandbox Code Playgroud)

python memory csv chunks pandas

166
推荐指数
10
解决办法
18万
查看次数

读取 3.2 GB 文件时 Pandas/Python 内存峰值

所以我一直在尝试使用 pandasread_csv函数读取内存中的 3.2GB 文件,但我不断遇到某种内存泄漏,我的内存使用量会激增90%+

所以还有替代方案

  1. 我尝试定义dtype以避免将数据作为字符串保留在内存中,但看到了类似的行为。

  2. 尝试了 numpy read csv,认为我会得到一些不同的结果,但这绝对是错误的。

  3. 尝试逐行阅读遇到了同样的问题,但速度非常慢。

  4. 我最近转向 python 3,所以认为那里可能存在一些错误,但在 python2 + pandas 上看到了类似的结果。

有问题的文件是来自 Kaggle 竞赛的 train.csv 文件组 bimbo的 train.csv 文件

系统信息:

RAM: 16GB, Processor: i7 8cores

如果您还想了解其他信息,请告诉我。

谢谢 :)

编辑1:它是一个内存峰值!不是泄漏(对不起,我的错。)

编辑 2:csv 文件示例

Semana,Agencia_ID,Canal_ID,Ruta_SAK,Cliente_ID,Producto_ID,Venta_uni_hoy,Venta_hoy,Dev_uni_proxima,Dev_proxima,Demanda_uni_equil
3,1110,7,3301,15766,1212,3,25.14,0,0.0,3
3,1110,7,3301,15766,1216,4,33.52,0,0.0,4
3,1110,7,3301,15766,1238,4,39.32,0,0.0,4
3,1110,7,3301,15766,1240,4,33.52,0,0.0,4
3,1110,7,3301,15766,1242,3,22.92,0,0.0,3
Run Code Online (Sandbox Code Playgroud)

编辑3:文件中的行数74180465

其他则简单pd.read_csv('filename', low_memory=False)

我努力了

from numpy import genfromtxt
my_data = genfromtxt('data/train.csv', delimiter=',')
Run Code Online (Sandbox Code Playgroud)

更新 下面的代码刚刚工作,但我仍然想弄清楚这个问题的根源,一定有什么问题。

import pandas as pd
import gc
data = pd.DataFrame()
data_iterator = pd.read_csv('data/train.csv', …
Run Code Online (Sandbox Code Playgroud)

python memory csv pandas

6
推荐指数
1
解决办法
2995
查看次数

标签 统计

csv ×2

memory ×2

pandas ×2

python ×2

chunks ×1