2017-05-31 54 views
0

我是新来的,正在使用散景0.10.0,跟在example之后。如何使用Bokeh 0.10.0处理梯度交叉表的缺失值?

我介绍失踪的大熊猫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 

我们怎么知道散景可以跳过缺失的值?

+0

我不知道是否有针对跳过缺失值的特定于散景的解决方案。用0填充nan值就足够了,还是想让散列输出文件不显示任何内容(如白色矩形)?你想要输出看起来像什么或你想要发生什么? 'int(np.nan)'返回一个ValueError。如果您尝试跳过数组中的值,我认为您会遇到问题,因为数组长度将不匹配。 – Jarad

+0

我更喜欢缺失的值不是0,因为有0的实际值。它可以分配0和1范围以外的值以将其与实际值分离。我们的目标是显示缺少可识别的颜色或空白,并允许范围从0到1的实际值的良好范围的颜色梯度。 – KubiK888

回答

1

我看到两种可能的选择。

[选项1]做一个上大熊猫数据帧替换data预先和处理for循环中的颜色分配:

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)]) 

[选项2]手柄在所述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,而-1值,但你可以把它改成你想要的。

+0

谢谢,if then语句是我给它更多想法之后的想法。我设法调整颜色列表和color.append以提供我需要的内容,但将在未来使用您的解决方案获得更一致的结果。 – KubiK888