首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Datashader中的分段绘图-数据超过我的内存

Datashader中的分段绘图-数据超过我的内存
EN

Stack Overflow用户
提问于 2020-06-11 05:24:10
回答 1查看 66关注 0票数 1

因此,我正在尝试Datashader,它看起来和性能都很好。然而,所有的示例都必须在具有大量ram的机器上完成,或者只是不使用那么大的数据集。因为我在做大图的时候会炸掉我的16 do的内存。我毫不怀疑Datashader可以处理数据,然而,我不知道如何加载它并逐段绘制它。

需要明确的是,它不是在绘图期间,而是实际上通过从数据库读取失败了-然而,由于Datashader是一个用于绘制非常大的数据的库,所以必须有一些方法来代替在df中加载所有内容并传递它?

我现在的代码是:

代码语言:javascript
复制
from colorcet import fire
import psycopg2
import datashader as ds
import datashader.transfer_functions as tf
con = getCon()
query = """SELECT latitude, longitude FROM mydatabasetable"""
df = pd.read_sql(query, con)
cvs = ds.Canvas(plot_width=400, plot_height=400)
agg = cvs.points(df, 'longitude', 'latitude')
img = tf.shade(agg, cmap=['lightblue', 'darkblue'], how='log')

例如,是否可以多次调用cvs.points方法(从而将我的数据分成几个位?)

EN

回答 1

Stack Overflow用户

发布于 2020-06-13 06:31:05

Datashader支持Pandas、Dask和CUDA dataframe (cuDF),每种都有自己的优势和局限性。Pandas是一个很好的默认选择,但是Pandas DataFrame会一次加载到内存中,这确实会限制您可以处理的数据集的大小。Dask dataframe没有这个限制;Dask定义了块,不需要一次加载所有块。我们通常将Datashader+Dask与基于分块的文件格式(如Parquet )一起使用,以处理比内存容量大得多的数据集;例如,请参阅https://examples.pyviz.org/nyc_taxi/dashboard.html (但删除.persist()以使其在内核外运行)。Dask.DataFrame有一个read_sql_table方法,但是我还没有验证过它是否像Parquet那样在内核之外运行;如果是这样的话,您应该是在做生意!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62313371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档