我有一个数据集,它代表了一些电压与时间的关系。数据集有32个MSamples(32 X 1024 X 1024),每个样本是16位电压值和64位时间值。我将这个数据集表示为pandas DataFrame,它有32 X 1024 X 1024行(样本数)和两列(电压和时间)。
我使用pandas. to_csv()将此DataFrame保存为CSV。生成的CSV文件大小为1.5 GB。也就是说,每个电压是16位或2字节,并且每个时间是64位或8字节,因此每行是2 + 8 = 10字节。我期望整个文件为10 X(32 X 1024 X 1024)= 320 MB。
所以我在这里漏掉了一个大约5的因子。有人能解释一下这个矛盾吗?这个. to_csv()是如何工作的?谢谢
更新:提供更多代码。我有一个包含32个MSamples的列表,因此样本数为
N_SAMPLES = 32 * 1024 * 1024
字符串
并且每个样本是16位值(2字节)。这些样本保存在名为DATA
的列表中。这些是在一段时间内获得的电压,我称这个时间段为DURATION
。然后,我通过以下操作生成每个样本采集时间的列表:
t = np.linspace(0,DURATION,num=N_SAMPLES)
型
我假设通过这样做,t
的每个元素都是np.float64,因此t
的每个元素都是64位值(8字节)。然后创建字典:
data = {\
"Time [s]": t,
"Output [V]": DATA
}
型
然后我创建pandas DataFrame并将其保存为CSV:
dataFrame = pd.DataFrame(data)
dataFrame.to_csv('output.csv', mode='w')
型
如果我的计算是正确的,每行是2 + 8 = 10字节,有32 X 1024 X 1024行。所以我期望CSV的大小是320MB,但实际上是1.5GB。我错过了什么?
1条答案
按热度按时间b4lqfgs41#
试试这个,只是转换第一次和整数,然后写入没有索引的文件:
字符串