dpylr::tbl 相当于 Pandas

问题描述 投票:0回答:1

我目前正在尝试从 R 到 Python 的两次切换。我正在为 Uni 项目使用大表。我通过以下命令将数据作为 Snowflake 对象加载到 R 中:

con <-
  nuvolos::get_connection()

db_mcc_desc <-
  dplyr::tbl(con, "Table")

“表”大约有 100GB,所以我真的很喜欢我可以在 db_mcc_desc 上使用许多 dplyr 函数,而无需将其加载到内存中。无论何时需要,我都可以创建较小的数据帧并使用

collect()
将它们加载到内存中。

但是,当使用以下 pandas 命令时,它会自动读取一个数据帧,该数据帧很快就超出了我的记忆。

import pandas as pd
from nuvolos import get_connection

con = get_connection()
db_mcc_desc = pd.read_sql_table('SELECT * TABLE', con=con)

普通批处理实际上不起作用,因为表太大了。 Pandas 中是否有与 R 的 dplyr 包中提供的类似且简单的解决方案。

非常感谢!

python sql r pandas
1个回答
0
投票

在幕后,我的理解是 tbl 只是 惰性评估 SQL,也就是说,它让你可以针对表编写 SQL,而无需执行它。

使用 Snowflake 实现此目的的一种方法是使用 Snowpark 来实现此目的。它创建一个虚拟数据帧,您可以查询/操作该数据帧,而无需将整个数据读入内存。

这可能是这样的:

from snowflake.snowpark import Session
from snowflake.snowpark.functions import col

...

df = session.table("TABLE")

filtered_df = df.filter(col("some_column") == "some_value")
filtered_df.show()

或者,Ibis 似乎是一个有信誉的 python 包,你可以在这里使用:

从 R 切换很痛苦,dplyr 很棒!

© www.soinside.com 2019 - 2024. All rights reserved.