人们经常谈论使用镶木地板和熊猫。我正在努力了解与 pandas 一起使用时我们是否可以利用 parquet 文件的全部功能。例如,假设我有一个大 parquet 文件(按年份分区),有 30 列(包括年份、州、性别、姓氏)和许多行。我想加载镶木地板文件并执行随后的类似计算
import pandas as pd
df = pd.read_parquet("file.parquet")
df_2002 = df[df.year == 2002]
df_2002.groupby(["state", "gender"])["last_name"].count()
Run Code Online (Sandbox Code Playgroud)
在此查询中仅使用 4 列(共 30 列)并且仅2002使用年份分区。这意味着我们只想引入此计算所需的列和行,并且在具有谓词和投影下推的 parquet 中可以实现类似的操作(以及我们使用 parquet 的原因)。
但我试图了解这个查询在 pandas 中的行为方式。当我们打电话的那一刻,它会把所有的事情都记起来吗df = pd.read_parquet("file.parquet)?或者这里应用了任何惰性因素来引入投影和谓词下推?如果情况并非如此,那么将 pandas 与 parquet 一起使用还有什么意义呢?任何这一切都可以通过arrow package?
虽然我没用过dask只是想知道这种情况是否是在 dask 中处理的,因为他们是懒惰地执行的。
我确信这种情况在 Spark 世界中处理得很好,但只是想知道在本地场景中如何使用 pandas、arrow、dask、ibis 等包处理这些情况。