为什么getsizeof(pandas.DataFrame) 与计算机中的文件不同?

Why getsizeof(pandas.DataFrame) different of the file in the computer?

我有 2 个 csv 文件:file1 的大小是 594,8 MB,file2 是 1,0 GB

但是当我写的时候

df1 = pd.read_csv(file1)
df2 = pd.read_csv(file2)
print(sys.getsizeof(df1))
print(sys.getsizeof(df2))

我得到:

457048830
460467614

为什么 DataFrame 的大小与 CSV 文件的大小相差如此之大?

为什么 594,8 MB 和 1,0 GB(文件大小)与 457048830 和 460467614 之间的关系不一样? (或者是一样的,但那是什么?)

CSV 文件以文本方式对数字进行编码,以逗号分隔。即一个10位数字会占用10个字节的数据。这意味着根据数字的大小,n 个数字可能会占用 2n 个字节到任意数量。

A DataFrame 将数据加载到整数中,整数(通常)以更有效的方式存储。一种常见的格式是 32 位浮点数,其中每个数字使用 4 个字节存储。

从上面我预计 file1file2 大致包含相同数量的数字,但 file2 包含(通常)需要更多文本来表示的数字。

例如包含 1, 2, 3, 4, ..., 1001.0001, 1.0002, 1.0003, ..., 1.0100 的两个文件都包含 100 个数字,并且 Python 中的大小大致相同。然而,当保存为文本 CSV 时,后者会大得多。