【发布时间】:2020-02-11 11:16:15
【问题描述】:
我的硬盘上存储了 3000 个 CSV 文件,每个文件包含数千行和 10 列。行对应于日期,并且行数以及确切日期在电子表格中是不同的。所有电子表格的列的编号 (10) 和标签都相同。对于从所有电子表格中的最早日期到所有电子表格中的最新日期的每个日期,我需要 (i) 访问每个电子表格中存在该日期数据的列,(ii) 运行一些计算,以及 (iii) 存储该日期的结果(一组 3 或 4 个标量值)。澄清一下,results 应该是我工作区中的一个变量,用于存储所有 CSV 的每个日期的结果。
有没有一种方法可以使用 Python 加载这些数据,既节省时间又节省内存?我尝试为每个 CSV 创建一个 Pandas 数据框,但是将所有数据加载到 RAM 中需要将近十分钟,并且几乎完全填满了我的 RAM。是否可以检查给定 CSV 中是否存在日期,如果存在,则将与该 CSV 对应的列加载到单个数据框中?这样,我可以只从每个 CSV 加载我需要的行来进行计算。
【问题讨论】:
-
如果内存不足,可能是时候考虑使用数据库而不是 RAM。
-
Pandas 确实提供了一些减少内存使用的选项,您尝试过其中的任何一个吗?还有一些与 Pandas 类似(或与之集成)的工具,旨在处理大量数据。