【发布时间】:2021-06-13 13:07:13
【问题描述】:
我将两个不同的 pandas DataFrames 存储为 parquet 文件(通过 kedro)。
在写入磁盘之前,两个 DataFrame 具有相同的尺寸和 dtypes (float32)。此外,它们在 RAM 中的内存消耗是相同的:
distances_1.memory_usage(deep=True).sum()/1e9
# 3.730033604
distances_2.memory_usage(deep=True).sum()/1e9
# 3.730033604
当保存为.parquet 文件时,第一个 df 生成一个 ~0.89GB 的文件,第二个文件生成一个 ~4.5GB 的文件。
distances_1 的冗余值比distances_2 多得多,因此压缩可能更有效。
将 parquet 文件从磁盘加载到 DataFrames 会产生与原始 DataFrames 相同的有效数据。
- 如何解释文件之间的巨大差异?
- 出于什么原因,第二个文件会比内存中的数据结构大?
【问题讨论】:
-
将 RAM 转换为常用单位会不会更容易混淆?
-
提供的代码以GB为单位返回数据帧的总内存消耗,对吧?我认为这样可以很容易地将其与文件大小进行比较。
-
我明白了,只是有时(例如在 Windows 资源管理器中)单位
1GB表示2^30 Bytes。 -
这个“更多的冗余值”是否可以通过某种方式测量?
-
当然你对 GB 的看法是对的,除以 1e9 只是一个近似值,但我认为这对这个问题并不重要,不是吗?
标签: python pandas parquet kedro