You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSV转Parquet再转回CSV后文件大小不一致,请问原因?

问题:CSV转Parquet再转回CSV后文件大小不一致

我尝试将大型CSV文件保存为Parquet格式,再转换回CSV格式。运行以下代码后,最终生成的CSV文件大小与原文件不一致,但数据的行数列数完全相同。

运行代码

import pandas as pd
import os  # 注:原代码遗漏os模块导入,此处补充

# 读取CSV文件
csvFile = 'test.csv'
df = pd.read_csv(csvFile)

# 显示文件及数据信息
csvFileSize = ((os.path.getsize(csvFile)/1024)/1024)/1024
print("CSV File Size (GB)     : ", csvFileSize)
print("Data Details           : ", df.shape)

# 保存为Parquet格式
parquetFile = csvFile.replace('csv', 'parquet')
df.to_parquet(parquetFile, index=None)
parquetFileSize = ((os.path.getsize(csvFile.replace('csv','parquet'))/1024)/1024)/1024
print("Parquet File Size (GB) : ", parquetFileSize)
print("Storage Size Saved     : ", round(100 - (parquetFileSize/csvFileSize)*100,2), "%")

# 读取Parquet并转回CSV
df = pd.read_parquet(parquetFile)
csvFile = 'Reconverted_' + csvFile
df.to_csv(csvFile, index=False)
csvFileSize = ((os.path.getsize(csvFile)/1024)/1024)/1024
print("Reconverted CSV (GB)   : ", csvFileSize)
print("Data Details           : ", df.shape)

输出结果

CSV File Size (GB)     :  6.168231673538685
Data Details           :  (3679839, 55)
Parquet File Size (GB) :  1.0481115290895104
Storage Size Saved     :  83.01 %
Reconverted CSV (GB)   :  6.157632351852953
Data Details           :  (3679839, 55)

原因分析及解决办法

文件大小不一致但数据结构(行、列数)完全匹配,说明核心数据没有丢失,差异来自CSV格式的细节处理,常见原因包括:

  • 引号与空格处理差异:原CSV可能对部分字段用引号包裹、存在首尾空格,pandas读取时会自动解析或清理这些格式细节,转回CSV时默认的引号规则(如quoting参数)、空格保留逻辑和原文件不一致,导致字节数变化。
  • 数据类型序列化差异:比如原CSV中的日期、数值类型,pandas读取后转为内部数据类型,转回CSV时的字符串格式(如日期分隔符、数值精度)可能和原文件不同,字符长度变化影响文件大小。
  • 空值表示不同:原CSV的空值可能用NA、NULL或特定字符串表示,pandas统一转为NaN后,转回CSV默认输出空字符串,和原空值的字节长度不同。
  • 编码差异:原CSV若使用非UTF-8编码(如GBK),pandasto_csv默认用UTF-8保存,不同编码下相同字符的字节数不同(如中文在UTF-8占3字节,GBK占2字节)。

如果需要生成和原文件完全一致的CSV,需调整读写参数匹配原文件的格式:

  1. 读取CSV时,指定na_values匹配原文件的空值标识,添加keep_default_na=False避免默认空值解析;
  2. 写入CSV时,用quoting参数(如csv.QUOTE_ALL/csv.QUOTE_NONNUMERIC)匹配原文件的引号规则,指定date_format统一日期输出格式;
  3. 读写时指定和原文件一致的encoding参数。

内容的提问来源于stack exchange,提问作者Joel Divekar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:12:42