python - 一个 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
解决方案
您的计算机没有任何问题。您正在经历与存储数据相关的开销。
这些值中的每一个都可能在您的计算机中存储为 64 位值,但是存储为字符串的列被存储为 python 对象,这将更像是每个单元格 240 字节。
所以删除你不需要的列,启用交换,如果你想变得真正花哨,学习如何使用 Dask。
另外,顺便说一句,如果将整个表放入 SQLlite3 数据库中,会容易得多。
推荐阅读
- arrays - 如何在 MPI_Scatter 的数组中分散多个变量
- apache-nifi - Nifi 颠簸转换以转换输入 json
- c++ - 从变量中为每个配置添加预处理器定义
- aws-lambda - 无法将数据批量保存到 aws dynamodb
- python-3.x - 如何在 FBV 中使用 PermissionRequiredMixin?
- php - 在wordpress循环中添加一个div?
- php - PHP 使用 file_get_contents($url) 解析数组数据
- javascript - Shopify - 首次亮相主题 - 如果选择了某些变体,则显示一个文本框
- python - 在 urls.py(Django) 中未检测到 DayArchiveview
- javascript - 无法理解类中的 Javascript setter 和 getter 查找