python生成的csv和转换的xlsx文件之间的大小差异

Posted

技术标签:

【中文标题】python生成的csv和转换的xlsx文件之间的大小差异【英文标题】:Size difference between python generated csv and converted xlsx file 【发布时间】:2019-02-20 11:58:58 【问题描述】:

我编写了一个python 程序以特定格式重命名文件名(大约 500k 个文件)。为了跟踪状态,我创建了一个数组数组status [[]],我在其中附加了文件名、文件路径、状态(重命名是否成功)和错误(如果有)。该过程完成后,使用pandas 将该数组导出到csv

status_file = # path to csv file
status_file_stream = open(status_file, 'w')

df_status = pandas.DataFrame(status)
df_status.to_csv(status_file, index=False)

生成的CSV 文件大小为228 MB,但当我使用openoffice 应用程序打开它并另存为xlsx 时,新的xlsx 文件大小仅为15.6 MB 而不会丢失任何数据。

为什么CSVXSLX 之间的大小差异很大,或者这是pandas 获得大文件大小的问题?

【问题讨论】:

压缩! csv 只是说这是一个带有逗号的txt,它是一个纯文本文件。另一方面,@ 987654337@ 是一种二进制格式,生成该格式的程序会压缩数据,如果您的数据基本相同,我假设这是因为路径大多相同,那么它的高度可压缩,这就是你看到了 @Nullman OP 说 CSV 是 228mb,xlsx 是 15mb,所以你说的没有意义 大部分 OP 数据是相同的(路径),这将是非常可压缩的 @Adelin 我刚刚测试了它。我制作了一个约 110 兆的文件,其中包含具有不同文件名的相同路径,然后我使用 zlib 对其进行压缩,它下降到约 20 兆,这没有 xlsx 可以处理的任何有趣的优化 哦,对了,看起来像我的答案 【参考方案1】:

为了完整起见,请写下我的评论作为答案:

压缩! csv 只是说这是一个带逗号的 txt 的一种奇特方式,它是一个纯文本文件。 另一方面,xlsx 是一种二进制格式,生成该格式的程序会压缩数据,如果您的数据基本相同,我假设这是因为路径基本相同,那么它的高度可压缩性,这就是你看到了

xlsx 使用 zip(至少根据 google)

为了测试这个声明,我生成了一个 ~110MB 的文件,其中包含具有相同路径的随机文件名,并使用 zlib 对其进行压缩,输出为 ~20MB

xlsx 可能有额外的优化,但我没有深入研究格式

【讨论】:

"xlsx 使用 zip(至少根据 google 的说法)" — 请尝试以下操作 ① 复制 file.xlsxfile.zip ② 双击 file.zip 那很漂亮,我以为它会有内部拉链部件【参考方案2】:

我也遇到过这个问题,不知道为什么大小不同,

问题可能是因为:

    xlsx 压缩文件,使其比 csv 小 如果一列只有整数,则 xlsx 将其视为 Int64,而 csv 将其视为 float64

【讨论】:

以上是关于python生成的csv和转换的xlsx文件之间的大小差异的主要内容,如果未能解决你的问题,请参考以下文章

Python之xlsx文件与csv文件相互转换

Python将csv转换为xlsx

在 python 中将多个 excel '.xlsx' 转换为 '.csv' 文件时,我得到了额外的列?

使用 python 将 XLSX 正确转换为 CSV [关闭]

Python如何读取xlsx文件并转换为csv而不写入目录[关闭]

如何使用 xlsxwriter 和 python 将图像添加到 xlsx 文件的标题?