为什么导入Python或R双倍大小的csv

时间:2014-06-27 00:19:29

标签: python csv pandas kaggle

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

有问题的数据来自a Kaggle competition,解压后为11GB(列车文件)。当我将它加载到python或R中时,它占用的空间超过两倍。我在Windows上有32 GB的RAM(当我加载文件时可以释放~29)并且我的空间几乎耗尽。

在Python中:

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

在R:

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

1 个答案:

答案 0 :(得分:2)

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

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

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

  • 所有数字都以字节为单位使用相同的大小并且符合所有预期值,大多数数字都需要大于字节数。
  • 在64位版本的程序上是最小的分配内存限制 - 从底部开始,所以即使最简单的数据也只是为了解决操作系统给出的原因而占用的数据超过了必要的数据
  • 通常有支持结构(例如哈希/词典,有各种索引)

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