In [ ]:
from collections import OrderedDict
import pandas as pd
from bokeh.charts import Scatter, output_notebook, show
from bokeh.sampledata.iris import flowers
output_notebook()

In [ ]:
setosa = flowers[(flowers.species == "setosa")][["petal_length", "petal_width"]]
versicolor = flowers[(flowers.species == "versicolor")][["petal_length", "petal_width"]]
virginica = flowers[(flowers.species == "virginica")][["petal_length", "petal_width"]]

xyvalues = OrderedDict([
    ("setosa", setosa.values), 
    ("versicolor", versicolor.values), 
    ("virginica", virginica.values)
])

In [ ]:
scatter = Scatter(
    xyvalues, title="iris dataset, dict input", 
    xlabel="petal_length", ylabel="petal_width", legend='top_left')
show(scatter)

In [ ]:
groupped_df = flowers[["petal_length", "petal_width", "species"]].groupby("species")
scatter = Scatter(
    groupped_df, title="iris dataset, grouped pandas input", 
    xlabel="petal_length", ylabel="petal_width", legend='top_left')
show(scatter)

In [ ]:
pdict = OrderedDict()
for i in groupped_df.groups.keys():
    labels = groupped_df.get_group(i).columns
    xname = labels[0]
    yname = labels[1]
    x = getattr(groupped_df.get_group(i), xname)
    y = getattr(groupped_df.get_group(i), yname)
    pdict[i] = list(zip(x, y))

In [ ]:
df = pd.DataFrame(pdict)
scatter = Scatter(
    df, title="iris dataset, pandas input", 
    xlabel="petal_length", ylabel="petal_width", legend='top_left')
show(scatter)

In [ ]:
scatter = Scatter(
    list(xyvalues.values()), title="iris dataset, list input", 
    xlabel="petal_length", ylabel="petal_width", legend='top_left')
show(scatter)

In [ ]:
from blaze import Data

b = Data(df)
scatter = Scatter(b, title="iris dataset, dict_input", xlabel="petal_length",
                  ylabel="petal_width", legend='top_left')
show(scatter)

In [ ]: