2017-05-31 56 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