Bokeh nyc\u出租车司机

2024-06-17 10:29:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着按照这里的例子:https://anaconda.org/jbednar/nyc_taxi/notebook

但是,我无法使以下块正常工作,因为MemoryError总是在特定行抛出(注释掉):

def merged_images(x_range, y_range, w=plot_width, h=plot_height, how='log'):
    cvs = ds.Canvas(plot_width=w, plot_height=h, x_range=x_range, y_range=y_range)
    picks = cvs.points(df, 'pickup_x',  'pickup_y',  ds.count('passenger_count'))
    drops = cvs.points(df, 'dropoff_x', 'dropoff_y', ds.count('passenger_count'))
    #more_drops = tf.shade(drops.where(drops > picks), cmap=["darkblue", 'cornflowerblue'], how=how)
    #more_picks = tf.shade(picks.where(picks > drops), cmap=["darkred", 'orangered'],  how=how)
    img = tf.stack(more_picks,more_drops)
    return tf.dynspread(img, threshold=0.3, max_px=4)

p = base_plot(background_fill_color=background)
export(merged_images(*NYC),"NYCT_pickups_vs_dropoffs")
InteractiveImage(p, merged_images)

这里需要大量的RAM(大于64GB),还是我遗漏了一些与内存相关的配置?我尝试过Windows10和Linux16.04(都是64位版本),使用当前版本的Python3.6和相应的库(bokeh、datashader、jupyter)都没有用。在

更新:我还注意到,尽管我的df.tail()似乎符合(11842093条记录),但直方图结果(从histogram(agg.values)开始)与原始笔记本(从https://anaconda.org/jbednar/nyc_taxi/notebook?version=2016.08.18.1303开始)有很大不同。在


Tags: httpsdfplottfmorecountdsrange
1条回答
网友
1楼 · 发布于 2024-06-17 10:29:15

根据@杰梅萨。贝德纳的注释:以及相关的提交:https://github.com/bokeh/datashader/commit/9fbace5c7b00410bdac7b7662ee24e466bc66330,问题发生在xarray>;=0.8时

解决方法是“在比较/合并/连接之前重命名列以匹配”

结果:

def merged_images(x_range, y_range, w=plot_width, h=plot_height, how='log'):
    cvs = ds.Canvas(plot_width=w, plot_height=h, x_range=x_range, y_range=y_range)
    picks = cvs.points(df, 'pickup_x',  'pickup_y',  ds.count('passenger_count'))
    drops = cvs.points(df, 'dropoff_x', 'dropoff_y', ds.count('passenger_count'))
    drops = drops.rename({'dropoff_x': 'x', 'dropoff_y': 'y'}) # added line
    picks = picks.rename({'pickup_x': 'x', 'pickup_y': 'y'}) # added line
    more_drops = tf.shade(drops.where(drops > picks), cmap=["darkblue", 'cornflowerblue'], how=how)
    more_picks = tf.shade(picks.where(picks > drops), cmap=["darkred", 'orangered'],  how=how)
    img = tf.stack(more_picks,more_drops)
    return tf.dynspread(img, threshold=0.3, max_px=4)

相关问题 更多 >