1

这可能是一个众所周知的答案......但是为什么一个 11GB 的文件(csv)在导入 Python(Pandas)或 R 时会变成两倍以上的大小?

有问题的数据来自Kaggle 竞赛,解压缩后为 11GB(训练文件)。当我将它加载到 python 或 R 中时,它占用了两倍以上的空间。我在 Windows 上有 32 GB 的 RAM(加载文件时有大约 29 GB 的空闲空间),而且我几乎用完了空间。

在 Python 中:

import pandas as pd
train=pd.read_csv("C:\\Users\\train.csv")

在 R 中:

train<-read.csv(file="C:\\train.csv",header=TRUE)
4

1 回答 1

3

序列化数据和内存中的数据结构不同

将数据序列化到磁盘(例如到 CSV 文件)是相当简单的任务,它只需要支持写入数据并以可预测的方式将其读出。唯一要遵循的规则是使用定义明确的格式。

另一方面,加载到 RAM 中进行处理的数据通常会因以下几个原因而增长:

  • 所有数字都使用相同的字节大小,并且为了适应所有预期值,字节数大于大多数数字所需的字节数。
  • 在 64 位版本的程序上,分配的内存量是有限的 - 从底部开始,所以即使是最简单的数据也会占用比必要的数据更多的数据,仅出于 OS 给出的寻址原因
  • 通常有支持结构(例如,对于哈希/字典,周围有某种索引)

无论如何,内存中的数据可能比一些糟糕的序列化格式更有效,但正如您所经历的那样,这不是您的情况。

于 2014-06-27T00:38:07.693 回答