如何使用Bokeh 0.10.0处理梯度交叉表的缺失值?

时间:2017-05-31 01:58:09

标签: python python-2.7 bokeh missing-data

我是新手,正在使用Bokeh 0.10.0,跟随此example

我在pandas df中引入缺失值

# Swap a real numeric value to missing
data['Jan'][0] = np.nan

行后

data = data.set_index('Year')

运行时,会出错

Traceback (most recent call last):
  File "C:\Users\KubiK\Desktop\Try2.py", line 36, in <module>
    color.append(colors[min(int(monthly_rate)-2, 8)])
ValueError: cannot convert float NaN to integer

我们如何告诉Bokeh跳过那个缺失值?

1 个答案:

答案 0 :(得分:1)

我看到两种可能的选择。

[选项1]事先在pandas DataFrame select o.customer, o.product, ots.updated_at, os.name from orders o inner join ( select s.`order`, s.`status`, s.updated_at from order_to_statuses s inner join ( select `order`, max(updated_at) as updated_at from order_to_statuses group by `order` ) m on s.`order` = m.`order` and s.updated_at = m.updated_at ) ots on o.Id = ots.`order` inner join order_states os on ots.`status` = os.id; 上进行替换并处理for循环中的颜色分配:

data

[选项2]使用data.replace([np.nan], -1, inplace=True) for y in years: for m in months: month.append(m) year.append(y) monthly_rate = data[m][y] if monthly_rate == -1: color.append('#FFFFFF') rate.append(monthly_rate) color.append(colors[min(int(monthly_rate)-2, 8)]) 处理for循环中的np.nan

if

注意我分配了颜色for y in years: for m in months: month.append(m) year.append(y) monthly_rate = data[m][y] if np.isnan(monthly_rate): rate.append(-1) color.append('#FFFFFF') else: rate.append(monthly_rate) color.append(colors[min(int(monthly_rate)-2, 8)]) #FFFFFF的值,但您可以将其更改为您想要的颜色。