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

时间:2019-02-20 11:58:58

标签: python csv xlsx openoffice-calc

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

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以获得较大文件大小的问题?

2 个答案:

答案 0 :(得分:2)

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

压缩! csv只是一种奇特的方式,可以说这是带有逗号的txt,它是纯文本文件。 另一方面,xlsx是二进制格式,并且生成该格式的程序会压缩数据(如果您的数据基本相同),我认为这是因为路径基本相同,因此其高度可压缩,这就是您正在看到

xlsx使用zip(至少根据google而言)

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

xlsx可能还有其他优化,但我没有深入研究格式

答案 1 :(得分:1)

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

问题可能是因为:

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