Ipython内核在读取大文件时意外死亡



我正在ipython笔记本上使用panda阅读大约3Gb的csv。在读取文件时,笔记本意外地给了我一条错误消息,说内核似乎已经失效,将重新启动。

根据python/panda中的几个"大数据"工作流,我正在阅读以下文件:

import pandas as pd
tp = pd.read_csv(file_name_cleaned,chunksize,iterator=True,low_memory=False)
df = pd.concat(tp,ignore_index=True)

我的工作流程包括一些预处理,以删除除字母数字字符和一些标点符号外的所有字符,如下所示:

with open(file_name,'r') as file1:
    with open(file_name_cleaned,'w') as file:2
        for line in file1:
                if len(line.split(sep_string)) == num_columns:
                    line = re.sub(r'[^A-Za-z0-9|._]+','',line)
                    file2.write(line+'n')

奇怪的是,如果我删除包含re()的行,我会得到一个不同的错误——"预期209个文件,在第22236行看到,看到329",尽管我已经明确检查了分隔符的确切数量。对线条和周围线条的视觉检查也没有给我太多显示。

这个过程对其他几个文件都很有效,包括那些更大的文件,所以我不认为文件的大小是问题所在,尽管我认为这可能过于简单化了。

我包含了预处理,因为我从经验中知道,有时数据包含奇怪的特殊字符,我也在read_csv()和open()语句中反复使用encoding='utf-8'和encoding='utf-8-sig',但没有真正的效果。

我有几个问题——包括编码关键字参数是否会导致python忽略这些字符集之外的字符,或者它可能会对这些字符调用某种转换?我对这类问题不是很熟悉。有没有可能是某种意想不到的角色通过了我的预处理,导致了这种情况?我还没有发现其他类型的问题会导致这种情况吗?(我做过研究,但没有什么是完全正确的。)

任何帮助都将不胜感激。

此外,我使用的是Anaconda 2.4、Python 3.5.1、Ipython 4.0.0和pandas 0.17.0

我不确定这是否完全回答了我的问题,但我确实解决了这个问题,虽然速度较慢,但在pd.read_csv()中使用engine='python'确实解决了问题。

最新更新