【发布时间】:2016-03-23 06:50:39
【问题描述】:
我正在 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')
奇怪的是,如果我删除包含 re.sub() 的行,我会得到一个不同的错误 - “预期 209 个文件,在第 22236 行看到,看到 329”,即使我已经明确检查了确切的数字的分隔符。对线条和周围线条的目视检查也没有给我太多帮助。
这个过程对于其他几个文件来说效果很好,包括更大的文件,所以我认为文件的大小不是问题,尽管我认为这可能过于简单了。
我包含了预处理,因为我从经验中知道有时数据包含奇怪的特殊字符,我也在使用 encoding='utf-8' 和 encoding='utf-8-sig' 之间来回走动read_csv() 和 open() 语句无济于事。
我有几个问题 - 包含 encoding 关键字参数是否会导致 python 忽略这些字符集之外的字符,或者它是否可能会为这些字符调用某种类型的转换?我对这些类型的问题不是很熟悉。有没有可能是某种意想不到的角色从我的预处理中溜走并导致了这种情况?是否有其他类型的问题我没有发现可能导致这种情况? (我做过研究,但没有什么是完全正确的。)
任何帮助将不胜感激。
另外,我正在使用 Anaconda 2.4、Python 3.5.1、Ipython 4.0.0 和 pandas 0.17.0
【问题讨论】:
标签: pandas encoding kernel ipython ipython-notebook