Python:在多张纸上将pandasDataFrame写入Excel的最快方法
我需要将24个pandas数据框(140列x 400行)导出到Excel中 ,每个都放到不同的工作表中。
我正在使用pandas的内置ExcelWriter
。 运行24个场景,需要:
51秒写入.xls
文件(使用xlwt
)
86秒写入.xlsx
文件(使用XlsxWriter
)
141秒写入.xlsm
文件(使用openpyxl
)
只需运行21秒程序(不输出Excel)
写入.xls
的问题是电子表格不包含格式化样式,所以如果我在Excel中打开它,select一列,然后单击“逗号”button来格式化数字,它会告诉我:'style comma not found ”。 我没有把这个问题写入一个.xlsx
,但是速度更慢。
有关如何使出口速度更快的build议? 我不能成为第一个有这个问题的人,但经过几个小时的search论坛和网站,我还没有find任何明确的解决scheme。
我唯一能想到的就是使用Python导出到csv文件,然后编写一个Excelmacros将所有CSV合并到一个电子表格中。
.xls
文件是10 MB,而.xlsx
5.2 MB
谢谢!
这里是不同的Python到Excel模块的基准 。
以下是在发布时使用最新版本模块的140列x(400 x 24)行的输出:
Versions: python : 2.7.7 openpyxl : 2.0.5 pyexcelerate: 0.6.3 xlsxwriter : 0.5.7 xlwt : 0.7.5 Dimensions: Rows = 9600 (400 x 24) Cols = 140 Times: pyexcelerate : 11.85 xlwt : 17.64 xlsxwriter (optimised): 21.63 xlsxwriter : 26.76 openpyxl (optimised): 95.18 openpyxl : 119.29
与任何基准一样,结果将取决于Python /模块版本,CPU,RAM和磁盘I / O以及基准本身。 所以一定要validation这些结果为你自己的设置。
另外,由于您特别询问了pandas,请注意PyExcelerate 不受支持 。
对于它的价值,这是我如何格式输出在xlwt。 文档是(或者至less是)非常斑点,所以我不得不猜测大部分!
import xlwt style = xlwt.XFStyle() style.font.name = 'Courier' style.font.height = 180 style.num_format_str = '#,##0' # ws0 is a worksheet ws0.write( row, col, value, style )
此外,我相信我试图在Excel中格式化生成的电子表格(Office 2010版本)时重复您的错误消息。 这很奇怪,但一些下拉工具栏格式选项的工作,有些则不。 但是,如果我通过右键单击“格式化单元格”,它们看起来都可以正常工作。