为什么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 个字节存储。
从上面我预计 file1
和 file2
大致包含相同数量的数字,但 file2
包含(通常)需要更多文本来表示的数字。
例如包含 1, 2, 3, 4, ..., 100
和 1.0001, 1.0002, 1.0003, ..., 1.0100
的两个文件都包含 100 个数字,并且 Python 中的大小大致相同。然而,当保存为文本 CSV 时,后者会大得多。
我有 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 个字节存储。
从上面我预计 file1
和 file2
大致包含相同数量的数字,但 file2
包含(通常)需要更多文本来表示的数字。
例如包含 1, 2, 3, 4, ..., 100
和 1.0001, 1.0002, 1.0003, ..., 1.0100
的两个文件都包含 100 个数字,并且 Python 中的大小大致相同。然而,当保存为文本 CSV 时,后者会大得多。