我有一个7 7GB的postgresql表,我想把它读入python并做一些分析。我不能为它使用Pandas,因为它比我本地机器上的内存大。因此,我想先尝试将表读入Dask Dataframe,执行一些聚合,然后切换回Pandas进行后续分析。为此,我使用了以下几行代码。
df = dd.read_sql_table('table_xyz', uri = "postgresql+psycopg2://user:pwd@remotehost/dbname", index_col = 'column_xyz', schema = 'private')
在数据库中对index_col即'column_xyz‘进行了索引。这是可行的,但是当我执行一个操作,例如聚合时,返回结果需要很长时间(比如一个小时)。
avg = df.groupby("col1").col2.mean().compute()
我知道Dask的速度没有Pandas快,当我在一台机器上工作而不是在集群上工作时,速度会更快。我想知道我使用Dask的方式是否正确?如果不是这样,那么使用Python对内存不能容纳的大型表执行分析时,哪种方法更快呢?
发布于 2021-07-16 01:54:05
如果您的数据适合机器的RAM,那么您最好使用Pandas。在某些情况下,Dask不会胜过Pandas。或者,您可以尝试调整块大小,看看情况是否有所改善。解决这个问题的最好方法是查看dask诊断工具仪表板,找出dask花了这么长时间的原因。这将帮助你做出更明智的决定。
https://stackoverflow.com/questions/68299203
复制相似问题