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
而不会丢失任何数据。
为什么CSV
和XSLX
之间的大小差异很大,或者这是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.xlsx
到 file.zip
② 双击 file.zip
那很漂亮,我以为它会有内部拉链部件【参考方案2】:
我也遇到过这个问题,不知道为什么大小不同,
问题可能是因为:
-
xlsx 压缩文件,使其比 csv 小
如果一列只有整数,则 xlsx 将其视为 Int64,而 csv 将其视为 float64
【讨论】:
以上是关于python生成的csv和转换的xlsx文件之间的大小差异的主要内容,如果未能解决你的问题,请参考以下文章
在 python 中将多个 excel '.xlsx' 转换为 '.csv' 文件时,我得到了额外的列?
使用 python 将 XLSX 正确转换为 CSV [关闭]