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
没有丢失任何数据。
为什么 CSV
和 XSLX
之间存在巨大的大小差异,或者这是 pandas
获取大文件的问题?
为了完整起见,我写下我的评论作为答案:
压缩! csv 只是一种奇特的方式来表示这是一个带逗号的 txt,它是一个纯文本文件。
另一方面,xlsx 是一种二进制格式,生成该格式的程序会压缩数据,如果您的数据大部分相同,我假设这是因为路径大部分相同,那么它是高度可压缩的,这就是你正在看
xlsx 使用 zip(至少根据 google)
为了测试这个说法,我生成了一个 ~110MB 的文件,其中包含具有相同路径的随机文件名,并使用 zlib
对其进行压缩,输出为 ~20MB
xlsx 可能有额外的优化,但我没有深入研究格式
我也遇到过这个问题,不确定为什么尺寸不同,
问题可能是因为:
- xlsx 压缩文件,因此它会比 csv 文件小
- 如果一列只有整数,则 xlsx 将其视为 Int64,而 csv 将其视为 float64
我写了一个 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,它是一个纯文本文件。 另一方面,xlsx 是一种二进制格式,生成该格式的程序会压缩数据,如果您的数据大部分相同,我假设这是因为路径大部分相同,那么它是高度可压缩的,这就是你正在看
xlsx 使用 zip(至少根据 google)
为了测试这个说法,我生成了一个 ~110MB 的文件,其中包含具有相同路径的随机文件名,并使用 zlib
对其进行压缩,输出为 ~20MB
xlsx 可能有额外的优化,但我没有深入研究格式
我也遇到过这个问题,不确定为什么尺寸不同,
问题可能是因为:
- xlsx 压缩文件,因此它会比 csv 文件小
- 如果一列只有整数,则 xlsx 将其视为 Int64,而 csv 将其视为 float64