【问题标题】:pandas to_csv writing keeps consuming more memory until it crashespandas to_csv 写入会不断消耗更多内存,直到崩溃
【发布时间】:2020-04-26 17:25:58
【问题描述】:

更新:我意识到每次新运行都会创建一个新的 Python 控制台,这会导致更多的内存消耗。我不得不关闭为每次运行创建新控制台的设置。当我出于某种原因升级到 Pycharm pro 时,此功能自动启用。现在,内存消耗稳定。

我的项目创建了一个名为“pressure_drop”的 csv,我想使用下面的代码创建一个新的 pandas 数据框。 此示例中的 pressure_drop.csv 有 10150 行和 12 列。如您所见,我正在删除一些不需要显示的列,然后通过分配行和列索引来创建数据框。最后,将其写入一个新的 .csv 文件,该文件更具可读性,我将使用它来创建交互式图表等。

问题是,每次在控制台中运行代码时,Python 都会占用更多的内存空间,如果代码运行次数足够多,Python 最终会崩溃。你能帮我理解为什么会这样吗?

例如,Python 每次为上述数据集运行代码时会多占用约 100 MB。

import pandas as pd

def data_frame_creator(result_array):
    array = results_csv_loader(result_array)
    array = np.delete(array,[3,4,5,6,7],1)
    len = array.shape
    row_count = len[0] +1
    df = pd.DataFrame(data = array, index=[np.arange(1,row_count)], columns=columns.dataframe_columns)
    df.to_csv('Output.csv')

data_frame_creator('pressure_drop.csv')

【问题讨论】:

  • 当你的意思是“熊猫”时不要说“Python”,尤其是pd.to_csv()。另外,显然不要尝试运行多个实例同时写入同一个文件。
  • 请向我们展示result_array的 5 行 sn-p(以文本形式发布,而不是屏幕截图)。没有你发布result_arraythe usual standard advice applies about handling huge CSVs:为每个类别指定dtype,这样你就不会通过阅读例如浪费大量内存。日期时间作为唯一字符串。

标签: python python-3.x pandas memory-management out-of-memory


【解决方案1】:

如果不知道数据框是什么样子以及您想要什么列,就很难知道您要做什么。也许您正在寻找的功能是 read_csv?例如:

input_df = pd.read_csv('pressure_drop.csv', use_cols=[1,2,8,9,10,11,12])

【讨论】:

  • 我想我找到了罪魁祸首。每次我运行代码时,它都会在 PyCharm 中创建一个新的控制台选项卡。我正在尝试找到禁用该功能的设置。当我手动关闭选项卡时,内存使用量会回落。
猜你喜欢
  • 1970-01-01
  • 2010-10-08
  • 2017-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
相关资源
最近更新 更多