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

Size difference between python generated csv and converted xlsx file

我写了一个 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,它是一个纯文本文件。 另一方面,xlsx 是一种二进制格式,生成该格式的程序会压缩数据,如果您的数据大部分相同,我假设这是因为路径大部分相同,那么它是高度可压缩的,这就是你正在看

xlsx 使用 zip(至少根据 google)

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

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

我也遇到过这个问题,不确定为什么尺寸不同,

问题可能是因为:

  1. xlsx 压缩文件,因此它会比 csv 文件小
  2. 如果一列只有整数,则 xlsx 将其视为 Int64,而 csv 将其视为 float64