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

Pandas Ipython内核在读取大文件时意外死亡,pandas,encoding,kernel,ipython,ipython-notebook,Pandas,Encoding,Kernel,Ipython,Ipython Notebook,我正在使用ipython笔记本中的pandas以~3Gb的csv格式阅读。在读取文件时,笔记本意外地给了我一条错误消息,说内核似乎已死亡,将重新启动 根据python/pandas中的几个“大数据”工作流,我阅读了中的文件,如下所示: import pandas as pd tp = pd.read_csv(file_name_cleaned,chunksize,iterator=True,low_memory=False) df = pd.concat(tp,ignore_index=True

我正在使用ipython笔记本中的pandas以~3Gb的csv格式阅读。在读取文件时,笔记本意外地给了我一条错误消息,说内核似乎已死亡,将重新启动

根据python/pandas中的几个“大数据”工作流,我阅读了中的文件,如下所示:

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')
我的工作流程涉及一些预处理,以删除除字母数字字符和一些标点符号以外的所有字符,如下所示:

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.sub()的行,我会得到一个不同的错误——“预期209个文件,在22236行中看到,在329行看到”,尽管我已经明确检查了分隔符的确切数量。对线路和周围线路的目视检查也没有给我太多的启示

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

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

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

任何帮助都将不胜感激


另外,我使用的是Anaconda 2.4、Python 3.5.1、Ipython 4.0.0和pandas 0.17.0。我不确定这是否完全回答了我的问题,但我确实解决了这个问题,虽然速度较慢,但在pd中使用engine='Python'。read_csv()做到了这一点。

这可能有助于完成答案: