python - 将 CSV 文件上传到 Pandas Dataframe 时标记数据时出错
问题描述
我有一个 8GB 的 CSV 文件,其中包含有关在法国创建的公司的信息。当我尝试使用 pandas.read_csv 在 Python 中上传它时,我得到了各种类型的错误;我认为这是导致问题的三个因素的组合:
- 文件大小(8GB)
- 单元格中的法语字符(如“é”)
- 这个 CSV 文件的组织方式类似于 Excel 文件;字段按列分隔,就像 XLS 文件一样
当我尝试使用以下方法导入文件时:
import pandas as pd
df = pd.read_csv(r'C:\..\data.csv')
我收到以下错误:OSError: Initializing from file failed
然后,为了消除大小问题,我复制文件 (data.csv) 并粘贴它,只保留前 25 行 (data2.csv)。这是一个更轻的文件,以消除大小问题:
df = pd.read_csv(r'C:\..\data2.csv')
我得到相同的OSError: Initializing from file failed错误。
经过一番研究,我用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 的正确代码是什么?
谢谢,
解决方案
从您的图像看来,该文件是用分号 (;) 分隔的。尝试使用“;” 作为 read_csv 函数中的 sep。
Pandas 将 csv 读入 ram - 一个 8GB 的文件很容易耗尽它 - 尝试分块读取文件。看到这个答案。
推荐阅读
- twitter - 我可以在没有 azure 的情况下在 twitter 上发布我的聊天机器人吗?(MS Bot Framework)
- android - 将 Kivy 嵌入到现有的 iOS/Android 原生应用程序中
- android - 有没有办法直接打开频道对话框而不是先打开 ShareSheet 然后打开频道对话框?
- fmi - Simulink 模型中的 FMU 无法处理输入?
- reactjs - MERN+ Cloudinary:不支持的源 URL
- amazon-web-services - 无法在 AWS 中创建/更新堆栈
- symfony - 如何在 Doctrine 3 中替换 EntityManager::merge?
- php - PHP / MySQL 批量插入(4000 条记录)和分面搜索的性能
- logging - 登录 dropwizard 应用程序
- html - 在 css 中将文本包装成 svg 形状(Indesign 样式)