You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

CSV转二进制文件后体积大幅缩减是否符合预期?

这种文件大小缩减完全符合预期!

嘿,别担心,你的转换操作完全没问题,这种大幅的文件体积缩小是CSV转原生二进制格式的正常现象,咱们来具体拆解原因:

1. CSV与二进制存储的本质差异

CSV是纯文本格式,它的额外开销来自多个方面:

  • 每个数值都要转换成字符串形式存储(比如1.23456789这类字符串的长度,远大于二进制的固定字节数)
  • 每行的分隔符(逗号)、换行符都会占用额外空间
  • 数值的符号、小数点、科学计数法标识(比如1e-5)都会增加存储长度

而你用tofile()写入的是原生二进制数据,每个float64类型的数值固定占用8字节,没有任何冗余的文本符号或格式信息,这是最紧凑的数值存储方式。

2. 数值计算验证

咱们来算一笔精准的账:
你的数据集是700万行 × 29列 = 203,000,000个float64数值
总字节数 = 203,000,000 × 8字节 = 1,624,000,000字节 ≈ 1.51GB
这和你得到的data_binary.dat大小(1.5GB)几乎完全一致,完美匹配,说明转换过程没有丢失任何数据。

3. 快速验证转换正确性

如果你还是不放心,可以用下面的代码把二进制文件读回来,和原CSV的数据做对比:

import numpy as np
import pandas as pd

# 读取二进制文件并恢复原始形状
binary_data = np.fromfile('data_binary.dat', dtype=np.float64).reshape(7000000, 29)
# 读取原CSV的前几行数据
df = pd.read_csv('data.csv', sep=',')
original_data = df.values[:3]

# 对比输出结果
print("原CSV前3行数据:")
print(original_data)
print("\n二进制文件读取的前3行数据:")
print(binary_data[:3])

如果两次输出内容完全一致,就可以彻底确认转换是正确的。

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

火山引擎 最新活动