将CSV文件上传到Pandas Dataframe时错误标记数据

时间:2019-01-04 15:55:06

标签: python pandas csv dataframe out-of-memory

我有一个8GB的CSV文件,其中包含有关在法国创建的公司的信息。 当我尝试使用pandas.read_csv在Python中上载它时,出现各种类型的错误。我认为是导致问题的三个因素的组合:

  • 文件大小(8GB)
  • 单元格中的法语字符(例如“é”)
  • 此CSV文件的组织方式类似于Excel文件;字段由列分开,就像XLS文件一样

当我尝试使用以下文件导入文件时:

import pandas as pd
df = pd.read_csv(r'C:\..\data.csv')

我遇到以下错误: OSError:从文件初始化失败

然后,为消除大小问题,我将文件(data.csv)复制并粘贴,仅保留前25行(data2.csv)。这是一个轻巧得多的文件,可以消除大小问题:

df = pd.read_csv(r'C:\..\data2.csv')

我得到相同的 OSError:从文件初始化失败错误。

经过研究,我尝试使用 Data2.csv

以下代码
df = pd.read_csv(r'C:\..\data2.csv', sep="\t", encoding="latin")

这次,导入成功完成,但是格式很奇怪,例如:https://imgur.com/a/y6WJHC5。所有字段都在同一列中。

因此,即使消除了大小问题,它也无法正确读取csv文件。而且,我需要使用主文件Data.csv。因此,我在初始文件(data.csv)上尝试了相同的代码:

df = pd.read_csv(r'C:\..\data.csv', sep="\t", encoding="latin")

我得到: ParserError:令牌化数据时出错。 C错误:内存不足

正确读取此data.csv的正确代码是什么?

谢谢

1 个答案:

答案 0 :(得分:1)

从图像中看,文件似乎用分号(;)分隔。尝试使用“;”作为read_csv函数中的sep。

Pandas将csv读取到ram中-一个8GB的文件可能很容易用尽它-尝试分块读取文件。 See this answer.