首页 > 解决方案 > 一个 3.6 GB 的 csv 怎么会占用我 64 GB 的所有内存?

问题描述

我正在将 csv 加载到 pandas 数据框中。csv 为 3.6 gb,我有 64 gb 的内存。加载 3.6 GB 文件时,内存怎么可能超过 64 GB?

有没有更好的方法来加载不占用太多内存的整个数据帧,或者我的计算机可能有问题。

这是我用来加载 csv 的代码

df = pd.read_csv('../input/ML_DATA.csv')

如果有兴趣,我也可以提供 csv 文件。

这是数据的示例

df = pd.read_csv('../input/ML_DATA.csv', nrows=10)
df.shape -> (10, 4247)

这是一个屏幕截图

在此处输入图像描述

这是打印的df.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Columns: 4247 entries, Location+Type to Pct of housing units in 4+ unit buildings
dtypes: float64(1132), int64(3), object(3112)
memory usage: 99.7+ KB
None

标签: pythonpandas

解决方案


您的计算机没有任何问题。您正在经历与存储数据相关的开销。

这些值中的每一个都可能在您的计算机中存储为 64 位值,但是存储为字符串的列被存储为 python 对象,这将更像是每个单元格 240 字节。

所以删除你不需要的列,启用交换,如果你想变得真正花哨,学习如何使用 Dask。

另外,顺便说一句,如果将整个表放入 SQLlite3 数据库中,会容易得多。


推荐阅读