0
我正在使用patsy來創建矩陣。但是當數據集中有None或者Nan值時,我會產生奇怪的行爲。如下所示,而不是僅刪除None行,它會創建具有1和0的其他列。當我添加一個None值時,爲什麼patsy會返回其他列?
import numpy as np
import pandas as pd
import patsy as pt
df = pd.DataFrame(np.array([(1,3),(2,6),(4,2),(6,3)]), columns=['y','X'])
In[60]: df
Out[60]:
y X
0 1 3
1 2 6
2 4 2
3 6 3
In[61]: pt.dmatrices('y ~ X', df)
Out[61]:
(DesignMatrix with shape (4, 1)
y
1
2
4
6
Terms:
'y' (column 0),
DesignMatrix with shape (4, 2)
Intercept X
1 3
1 6
1 2
1 3
Terms:
'Intercept' (column 0)
'X' (column 1))
In[62]: df = pd.DataFrame(np.array([(1,3),(2,6),(4,2),(6,None)]), columns=['y','X'])
In[63]: pt.dmatrices('y ~ X', df)
Out[63]:
(DesignMatrix with shape (3, 4)
y[1] y[2] y[4] y[6]
1 0 0 0
0 1 0 0
0 0 1 0
Terms:
'y' (columns 0:4),
DesignMatrix with shape (3, 3)
Intercept X[T.3] X[T.6]
1 1 0
1 0 1
1 0 0
Terms:
'Intercept' (column 0)
'X' (columns 1:3))
爲什麼patsy在添加None值時返回附加列?
謝謝,我想第二個答案應該是:df = pd.DataFrame(np.array([(1,3),(2,6),(4,2),(6,np.nan)])) ,列= [ 'y','X'])引發NameError:name'nan'沒有被定義 – user1181337
你說得對,Canopy會自動導入它們,所以我有時忘記包含np。現在編輯。 – ayhan