散景图中的NaN值

时间:2015-09-06 10:00:14

标签: python plot bokeh

我早些时候在谷歌小组上提出了这个问题link并且通过Sarah Bird提供的有用答案了解了很多,只是为了在这里发布答案,对于遇到类似问题的人。那时我正在使用bokeh 0.9.2。

我试图为一批商业租赁建立一个气泡图,其中包括:

  1. x轴表示租约结束的日期(日期时间:2015年 - 2020年)
  2. y轴代表租金水平(浮动:200-500)
  3. 圆圈的大小/半径表示前提的大小(浮动:200 - 8,000 - GFA)
  4. 圆圈的颜色代表楼层#(整数:1 - 40)
  5. 我的尝试:

    import pandas as pd
    import numpy as np
    from bokeh.io import output_notebook, show, output_file
    from bokeh.plotting import figure, ColumnDataSource
    from datetime import datetime
    output_notebook()
    
    PATH = ''
    filename = 'test_RR.xlsx'
    df = pd.read_excel(PATH + filename)
    
    df['TA_END'] = np.where(pd.isnull(df['ET Date']), df.L_END, np.where(df['ET Date'] < df.L_END, df['ET Date'], df.L_END)) # just some data cleaning, don't bother with this
    
    GFA_SCALE_FACTOR = 2
    df['GFA_radius'] = np.sqrt( df.GFA / np.pi ) * GFA_SCALE_FACTOR
    
    import seaborn as sns
    colors = list(sns.cubehelix_palette(28, start=.5, rot=-.75))
    hex_colors = np.array(['#%02x%02x%02x' % (c[0]*255, c[1]*255, c[2]*255) for c in colors])
    df['color'] = hex_colors[df.FL - 4]
    

    我在尝试时发生错误:

    source = ColumnDataSource(df)
    p = figure(x_axis_type="datetime", width = 800, height = 400)
    
    p.circle(x='TA_END', y='Eff Rent', 
             size= 'GFA_radius',
             fill_alpha=0.8, line_width=0.5, line_alpha=0.5, color = 'color', source = source)
    show(p)
    

    错误消息让我觉得datetime序列化的方式有问题:

    ValueError: month must be in 1..12
    

    我将在答案中张贴莎拉的答案。

1 个答案:

答案 0 :(得分:0)

问题是,实际上是因为&#34; ET日期&#34;列中的NaN值。 DataFrame&#34; df&#34;虽然与情节无关,但导致散景序列化失败。

所以,如果我这样做:

{{2一切都会成功。

一个好的提示始终只是从你需要的列中创建一个ColumnDataSource,因为这样你就会消耗更多的数据/处理能力。 浏览器比你需要的 - 也来自Sarah。

但是,我希望散景可以处理一些NaN数据,因为有些情节可能想要偶尔显示一个空位。