【发布时间】:2021-09-12 15:51:53
【问题描述】:
我正在处理一些大小在 1Gb 到 2Gb 之间的 CSV 文件。将文件加载到 pandas 数据框中需要 20-30 分钟,而我执行的每个操作需要 20-30 分钟,例如按列名过滤数据框,打印 dataframe.head() 等。有时,当我在等待时尝试使用另一个应用程序时,它也会滞后于我的计算机。我使用的是 2019 年的 Macbook Pro,但我想其他设备也一样。
我尝试过使用 modin,但数据操作仍然很慢。
有什么方法可以让我工作更有效率?
提前感谢您的回复。
【问题讨论】:
-
你对这些文件做了什么?每次操作都需要读入整个文件吗?
-
听起来你的可用内存太少了。
-
使用活动监视器查看您是否正在交换 - 您可能需要更多内存。如果您不需要所有列,
usecols可以限制保留的内容。如果您多次使用相同的 csv,请将它们保存到 parquet 之类的文件中。如果某些数据使您无法使用像 int64 这样的小型 dtype(例如,由于空行而最终得到 object),请先使用csv模块逐行清理 csv。 Apache箭头可以帮助arrow.apache.org/docs/python -
这些症状暗示您的处理耗尽了可用内存。解决方案:要么购买更多内存,如果您可以添加一些到您的机器或购买一台具有更多内存的计算机,或者如果有意义,请尝试不将整个文件加载到内存中。对于简单的操作,使用 csv 模块一次处理一行文件是模块并且只需要很少的内存,无论文件大小...
-
@norie 我正在从一个大型 CSV 文件中选择列,然后将其转换为一个 numpy 数组以与 tensorflow 一起使用。
标签: python pandas dataframe csv