获取CParserError。Pandas是否对单元格中某个值的最大大小设置了限制?

2024-06-13 13:13:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直试图用熊猫来分析一些基因组学数据。当读取csv时,我得到CParserError: Error tokenizing data. C error: out of memory错误,我已经缩小到导致它的特定行,即43452。如下所示,直到解析器超出第43452行时才会发生错误。在

我还粘贴了来自less输出的相关行,其中长序列被截断,第二列(seq_len)显示了这些序列的长度。如你所见,有些序列相当长,有几百万个字符(即基因组学中的碱基)。我想知道这个错误是不是csv中的值太大造成的。熊猫是否对单元格中的值的长度设置了限制?如果是,它有多大?在

顺便说一句,data.csv.gz如果解压的行数少于200万行,那么它的大小大约是9G。我认为我的系统内存不可能超过100G。在

在第43451行成功读取

In [1]: import pandas as pd
In [2]: df = pd.read_csv('data.csv.gz',
                         compression='gzip', header=None,
                         names=['accession', 'seq_len', 'tax_id', 'seq'],
                         nrows=43451)

第43452行读取失败

^{pr2}$

第43450-43455行,属于less -N -S输出,长序列被截断。第一列是行号,后面是用逗号分隔的csv内容。列名为['accessition'、'seq_len'、'tax_id'、'seq']

43450 FP929055.1,3341681,657313,AAAGAACCTTGATAACTGAACAATAGACAACAACAACCCTTGAAAATTTCTTTAAGAGAA....
43451 FP929058.1,3096657,657310,TTCGCGTGGCGACGTCCTACTCTCACAAAGGGAAACCCTTCACTACAATCGGCGCTAAGA....
43452 FP929059.1,2836123,717961,GTTCCTCATCGTTTTTTAAGCTCTTCTCCGTACCCTCGACTGCCTTCTTTCTCACTGTTC....
43453 FP929060.1,3108859,245012,GGGGTATTCATACATACCCTCAAAACCACACATTGAAACTTCCGTTCTTCCTTCTTCCTC....
43454 FP929061.1,3114788,649756,TAACAACAACAGCAACGGTGTAGCTGATGAAGGAGACATATTTGGATGATGAATACTTAA....
43455 FP929063.1,34221,29290,CCTGTCTATGGGATTTGGCAGCGCAATGCAGGAAAACTACGTCCTAAGTGTGGAGATCGATGC....

Tags: csv数据iniddatalen错误序列
1条回答
网友
1楼 · 发布于 2024-06-13 13:13:19

好吧,最后一行说明了一切,它没有足够的内存来分割数据块。我不确定归档块读取是如何工作的,以及它加载到内存中的数据量,但很明显,您必须以某种方式控制块的大小。我在这里找到了一个解决方案:

pandas-read-csv-out-of-memory

在这里:

out-of-memory-error-when-reading-csv-file-in-chunk

请试着逐行阅读正常的文件,看看它是否有效。在

相关问题 更多 >