2016-06-30 65 views
1

如何計算每列的np.var()?如果np.var()< 0.1,則刪除該列。熊貓計算每列的np.var()

Id F M R 
7 1 286 907 
12 1 286 907 
17 1 186 1271 
21 1 296 905 
30 1 308 908 
32 1 267 905 
40 2 591 788 
41 1 486 874 
47 1 686 906 
74 1 230 907 
+0

你可以發佈你的腳本plz – Deadpool

回答

1

試試這個:

In [62]: df[df.columns[(df.var(ddof=0) >= 1.0)]] 
Out[62]: 
    Id M  R 
0 7 286 907 
1 12 286 907 
2 17 186 1271 
3 21 296 905 
4 30 308 908 
5 32 267 905 
6 40 591 788 
7 41 486 874 
8 47 686 906 
9 74 230 907 

說明:

In [64]: (df.var(ddof=0) >= 1.0) 
Out[64]: 
Id  True 
F  False 
M  True 
R  True 
dtype: bool 


In [61]: df.columns[(df.var(ddof=0) >= 1.0)] 
Out[61]: Index(['Id', 'M', 'R'], dtype='object') 

In [62]: df[df.columns[(df.var(ddof=0) >= 1.0)]] 
Out[62]: 
    Id M  R 
0 7 286 907 
1 12 286 907 
2 17 186 1271 
3 21 296 905 
4 30 308 908 
5 32 267 905 
6 40 591 788 
7 41 486 874 
8 47 686 906 
9 74 230 907 

PS感謝@ayhan - 他已注意到,pandas's var()使用默認值,爲ddof=1參數和numpy's implementation每默認使用ddof=0

+1

對於np.var的確切等價物,你需要將'ddof = 0'傳遞給pandas var。默認情況下,熊貓計算樣本方差而不是總體方差。 – ayhan

+1

@ayhan,趕上!非常感謝!我糾正了我的答案 – MaxU