我在ipython笔记本中使用pandas在〜3Gb csv中读取数据。在阅读文件时,笔记本意外地给了我一个错误消息,说明内核似乎已经死亡并将重新启动。Ipython内核意外读取大文件
按在Python /熊猫,我读的文件在如下几个“大数据”的工作流程:
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米的Fileds,在线路22236锯,329”,即使我明确检查了分隔符的确切数量。对线条和周围线条的视觉检查也没有给我带来太多好处。
这个过程对于其他几个文件,包括那些较大的文件,但我不认为文件的大小是问题,但我认为这可能是过于简单化了。
我包括了预处理,因为根据经验我知道有时数据中包含奇怪的特殊字符,我也在使用encoding ='utf-8'和encoding ='utf-8-sig'之间来回切换read_csv()和open()语句无济于事。
我有几个问题 - 包括编码关键字参数导致python忽略这些字符集之外的字符,或者它可能会调用这些字符的某种转换吗?我对这些类型的问题不太了解。某种意想不到的角色是否可能在我的预处理中滑落并导致了这种情况?有没有发现可能导致此问题的另一类问题? (我已经做了研究,但没有什么是完全正确的。)
任何帮助将不胜感激。
另外,我使用的是蟒蛇2.4,与Python 3.5.1,4.0.0的IPython,和熊猫0.17.0或更新