簡體   English   中英

python生成的csv和轉換后的xlsx文件的大小差異

[英]Size difference between python generated csv and converted xlsx file

我編寫了一個python程序,以特定格式重命名文件名(大約 50 萬個文件)。 為了跟蹤狀態,我創建了一個數組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(至少根據谷歌)

為了測試這個聲明,我生成了一個 ~110MB 的文件,其中包含具有相同路徑的隨機文件名,並使用zlib進行壓縮,輸出為 ~20MB

xlsx 可能有額外的優化,但我沒有深入研究格式

我也遇到了這個問題,但不確定為什么大小不同,

問題可能是因為:

  1. xlsx 壓縮文件,使其比 csv 小
  2. 如果一列只有整數,則 xlsx 將其視為 Int64,而 csv 將其視為 float64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM