title: Bokeh: ValueError: Out of range float values are not JSON compliant
body: <p>I came across this discussion (from a year ago): <a href="https://github.com/bokeh/bokeh/issues/2392" rel="noreferrer">https://github.com/bokeh/bokeh/issues/2392</a></p>
  
  <p>I also saw the white screen without any errors..and then i tried to take a small subset of 2 columns and tried the below:</p>
  
  <p>Since pandas just gets a bunch of rows with empty data in there as well, I tried dropna.. this resulted in there being no data at all. So instead I just specified the rows that should go into the df (hence the <code>df = df.head(n=19)</code> line)</p>
  
  <pre><code>import pandas as pd
  from bokeh.plotting import figure, output_file, show
  
  df = pd.read_excel(path,sheetname,parse_cols="A:B")
  df = df.head(n=19)
  print(df)
  rtngs = ['iAAA','iAA+','iAA','iAA-','iA+','iA','iA-','iBBB+','iBBB','iBBB-','iBB+','iBB','iBB-','iB+','iB','iB-','NR','iCCC+']
  x= df['Score']
  output_file("line.html")
  
  p = figure(plot_width=400, plot_height=400, x_range=(0,100),y_range=rtngs)
  
  # add a circle renderer with a size, color, and alpha
  p.circle(df['Score'], df['Rating'], size=20, color="navy", alpha=0.5)
  
  # show the results
  #output_notebook()
  show(p)
  </code></pre>
  
  <p>df:</p>
  
  <pre><code>   Rating  Score
  0    iAAA   64.0
  1    iAA+   33.0
  2     iAA    7.0
  3    iAA-   28.0
  4     iA+   36.0
  5      iA   62.0
  6     iA-   99.0
  7   iBBB+   10.0
  8    iBBB   93.0
  9   iBBB-   91.0
  10   iBB+   79.0
  11    iBB   19.0
  12   iBB-   95.0
  13    iB+   26.0
  14     iB    9.0
  15    iB-   26.0
  16     NR   49.0
  17  iCCC+   51.0
  18   iAAA   18.0
  </code></pre>
  
  <p>The above is showing me an output within the notebook, but still throws : <code>ValueError: Out of range float values are not JSON compliant</code></p>
  
  <p>And also it doesn't (hence?) produce the output file as well. How do I get rid of this error for this small subset? Is it related to NaN values? Would that also solve the 'white screen of death' issue for the larger dataset?</p>
  
  <p>Thanks vm for taking a look!</p>
  
  <p>In case you would like to see the entire error:</p>
  
  <pre><code>---------------------------------------------------------------------------
  ValueError                                Traceback (most recent call last)
  &lt;ipython-input-12-4fa6b88aa415&gt; in &lt;module&gt;()
       16 # show the results
       17 #output_notebook()
  ---&gt; 18 show(p)
  
  C:\Users\x\AppData\Local\Continuum\Anaconda3\lib\site-packages\bokeh\io.py in show(obj, browser, new)
      300     if obj not in _state.document.roots:
      301         _state.document.add_root(obj)
  --&gt; 302     return _show_with_state(obj, _state, browser, new)
      303 
      304 
  
  C:\Users\x\AppData\Local\Continuum\Anaconda3\lib\site-packages\bokeh\io.py in _show_with_state(obj, state, browser, new)
      310 
      311     if state.notebook:
  --&gt; 312         comms_handle = _show_notebook_with_state(obj, state)
      313         shown = True
      314 
  
  C:\Users\x\AppData\Local\Continuum\Anaconda3\lib\site-packages\bokeh\io.py in _show_notebook_with_state(obj, state)
      334         comms_target = make_id()
      335         publish_display_data({'text/html': notebook_div(obj, comms_target)})
  --&gt; 336         handle = _CommsHandle(get_comms(comms_target), state.document, state.document.to_json())
      337         state.last_comms_handle = handle
      338         return handle
  
  C:\Users\x\AppData\Local\Continuum\Anaconda3\lib\site-packages\bokeh\document.py in to_json(self)
      792         # this is a total hack to go via a string, needed because
      793         # our BokehJSONEncoder goes straight to a string.
  --&gt; 794         doc_json = self.to_json_string()
      795         return loads(doc_json)
      796 
  
  C:\Users\x\AppData\Local\Continuum\Anaconda3\lib\site-packages\bokeh\document.py in to_json_string(self, indent)
      785         }
      786 
  --&gt; 787         return serialize_json(json, indent=indent)
      788 
      789     def to_json(self):
  
  C:\Users\x\AppData\Local\Continuum\Anaconda3\lib\site-packages\bokeh\core\json_encoder.py in serialize_json(obj, encoder, indent, **kwargs)
       97         indent = 2
       98 
  ---&gt; 99     return json.dumps(obj, cls=encoder, allow_nan=False, indent=indent, separators=separators, sort_keys=True, **kwargs)
  
  C:\Users\x\AppData\Local\Continuum\Anaconda3\lib\json\__init__.py in dumps(obj, skipkeys, ensure_ascii, check_circular, allow_nan, cls, indent, separators, default, sort_keys, **kw)
      235         check_circular=check_circular, allow_nan=allow_nan, indent=indent,
      236         separators=separators, default=default, sort_keys=sort_keys,
  --&gt; 237         **kw).encode(obj)
      238 
      239 
  
  C:\Users\x\AppData\Local\Continuum\Anaconda3\lib\json\encoder.py in encode(self, o)
      197         # exceptions aren't as detailed.  The list call should be roughly
      198         # equivalent to the PySequence_Fast that ''.join() would do.
  --&gt; 199         chunks = self.iterencode(o, _one_shot=True)
      200         if not isinstance(chunks, (list, tuple)):
      201             chunks = list(chunks)
  
  C:\Users\x\AppData\Local\Continuum\Anaconda3\lib\json\encoder.py in iterencode(self, o, _one_shot)
      255                 self.key_separator, self.item_separator, self.sort_keys,
      256                 self.skipkeys, _one_shot)
  --&gt; 257         return _iterencode(o, 0)
      258 
      259 def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,
  
  ValueError: Out of range float values are not JSON compliant
  </code></pre>