在 pandas xlsxwriter 中使用常量内存

Using constant memory with pandas xlsxwriter

我正在尝试使用下面的代码将大型 pandas 数据帧写入 excel worsheets,如果我直接写入它,系统 运行 内存不足,这是可行的吗选项还是有其他选择?

writer = pd.ExcelWriter('Python Output Analysis.xlsx', engine='xlsxwriter',options=dict(constant_memory=True))

如果你的数据很大,可以考虑用原始文本文件保存数据。例如csv、txt 等

df.to_csv('file.csv', index=False, sep=',')
df.to_csv('file.tsv', index=False, sep='\t')

或者拆分DataFrame,保存成小文件。

df_size = df.shape[0]
chunksize = df_size//10
for i in range(0, df_size, chunksize):
    # print(i, i+chunksize)
    dfn = df.iloc[i:i+chunksize,:]
    dfn.to_excel('...')  

XlsxWriter 的 constant_memory 模式可用于写入非常大的 Excel 文件,内存使用率低且恒定。问题是数据需要按行顺序写入,并且(正如@Stef 在上面的评论中指出的那样)Pandas 按列顺序写入 Excel。所以 constant_memory 模式不适用于 Pandas ExcelWriter.

作为替代方案,您可以避免 ExcelWriter 并将数据逐行直接从数据帧写入 XlsxWriter。但是,从 Pandas 的角度来看,这会更慢。