我正在尝试在pandas中读取较大的csv文件(大约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__ = name
C:\Python27\lib\site-packages\pandas\io\parsers.pyc in _read(filepath_or_buffer, kwds)
242 return parser
243
--> 244 return parser.read()
245
246 _parser_defaults = {
C:\Python27\lib\site-packages\pandas\io\parsers.pyc in read(self, nrows)
693 raise ValueError('skip_footer not supported for iteration')
694
--> 695 ret = self._engine.read(nrows)
696
697 if self.options.get('as_recarray'):
C:\Python27\lib\site-packages\pandas\io\parsers.pyc in read(self, nrows)
1137
1138 try:
-> 1139 data = self._reader.read(nrows)
1140 except StopIteration:
1141 if nrows is None:
C:\Python27\lib\site-packages\pandas\parser.pyd in pandas.parser.TextReader.read (pandas\parser.c:7145)()
C:\Python27\lib\site-packages\pandas\parser.pyd in pandas.parser.TextReader._read_low_memory (pandas\parser.c:7369)()
C:\Python27\lib\site-packages\pandas\parser.pyd in pandas.parser.TextReader._read_rows (pandas\parser.c:8194)()
C:\Python27\lib\site-packages\pandas\parser.pyd in pandas.parser.TextReader._convert_column_data (pandas\parser.c:9402)()
C:\Python27\lib\site-packages\pandas\parser.pyd in pandas.parser.TextReader._convert_tokens (pandas\parser.c:10057)()
C:\Python27\lib\site-packages\pandas\parser.pyd in pandas.parser.TextReader._convert_with_dtype (pandas\parser.c:10361)()
C:\Python27\lib\site-packages\pandas\parser.pyd in pandas.parser._try_int64 (pandas\parser.c:17806)()
MemoryError:
任何帮助吗?
该错误表明机器没有足够的内存来一次将整个CSV读入DataFrame
。假设你一次也不需要整个数据集都在内存中,那么避免该问题的一种方法是分批处理CSV(通过指定chunksize参数):
chunksize = 10 ** 6
for chunk in pd.read_csv(filename, chunksize=chunksize):
process(chunk)
该chunksize
参数指定每个块的行数。(当然,最后一块可能少于chunksize
行。)
主要内容:CSV文件读取,json读取文件,SQL数据库读取当使用 Pandas 做数据分析的时,需要读取事先准备好的数据集,这是做数据分析的第一步。Panda 提供了多种读取数据的方法: read_csv() 用于读取文本文件 read_json() 用于读取 json 文件 read_sql_query() 读取 sql 语句的, 本节将对上述方法做详细介绍。 CSV文件读取 CSV 又称逗号分隔值文件,是一种简单的文件格式,以特定的结构来排列表格数据
问题内容: 对此有很多问题,但是对于如何将xlsb文件读入熊猫还没有简单的答案。是否有捷径可寻? 问题答案: 随着pandas-的发布,增加了对二进制Excel文件的支持。 笔记: 您将需要升级熊猫- 您将需要安装-
问题内容: 我有一个非常大的数据集,我无法读取其中的整个数据集。因此,我正在考虑只读取其中的一个数据块进行训练,但是我不知道该怎么做。任何想法将不胜感激。 问题答案: 如果您只想读取前999,999行(非标题): 如果您只想读取1,000,000 … 1,999,999行 nrows :int,默认值无要读取的文件行数。对读取大文件有用* skiprows :类似于列表或整数的行号,在文件开始处要
问题内容: 我正在使用该功能将Excel文件导入到熊猫数据框。 列之一是表的主键:它是所有数字,但是存储为文本(Excel单元格左上角的绿色小三角形确认了这一点)。 但是,当我将文件导入pandas数据框时,该列将以浮点形式导入。这意味着,例如“ 0614”变为614。 导入列时是否可以指定数据类型?我知道在导入CSV文件时这是可能的,但找不到的语法。 我能想到的唯一解决方案是在Excel中的文本
问题内容: 我想使用python的Pandas库读取.xlsx文件,并将数据移植到postgreSQL表中。 到目前为止,我所能做的就是: 现在,我知道该步骤已成功执行,但是我想知道如何解析已读取的excel文件,以便可以了解excel中的数据如何映射到变量数据中的数据。 我没弄错,数据就是Dataframe对象。因此,我如何解析此dataframe对象以逐行提取每一行。 问题答案: 我通常会为每
我在使用Pandas读取选项卡分隔的文件时遇到问题。 所有单元格值都有双引号,但对于某些行,有一个额外的双引号打断了整个过程。例如: 我得到的错误是:错误标记数据。C错误:第8355行预期有31个字段,SAW58 我使用的代码是: 它适用于其余文件,但不适用于出现额外双引号的文件。