我有一个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')
索引列即“column”在数据库中被索引。这是可行的,但当我执行一个操作(例如聚合)时,返回结果需要很长时间(比如一个小时)。
avg = df.groupby("col1").col2.mean().compute()
我知道dask的速度不如pandas快,所以当我在一台机器上工作而不是在集群上工作时。但是,我已经在一台内存充足的服务器上将同一个表读入pandas中,后续任务使用类似pandas的聚合要快得多。
我想知道我使用dask的方式是否正确?如果不是,那么使用python对不适合内存的大型表执行分析的更快方法是什么。
暂无答案!
目前还没有任何答案,快来回答吧!