<Python, pandas> データフレームから欠損値(np.nan)を除く方法

まずはデータフレームDataFrame

In [16]: df = pd.DataFrame([(1,2,3),(4,np.nan,7),(np.nan,9,10)])
In [17]: df
Out[17]:
    0   1   2
0   1   2   3
1   4 NaN   7
2 NaN   9  10

欠損値np.nanを全部除く。 欠損値が1つでもある行Rowを除く。

In [18]: df.dropna()
Out[18]:
   0  1  2
0  1  2  3

欠損値を含む列Columnを除く

In [20]: df.dropna(axis=1)
Out[20]:
    2
0   3
1   7
2  10

column[0]で欠損値を含む行を除く

In [21]: df.dropna(subset=[0])
Out[21]:
   0   1  2
0  1   2  3
1  4 NaN  7

データフレームに行名index、列名columns追加。

In [23]: df.columns = list('abc')
In [25]: df.index = list('xyz')

In [26]: df
Out[26]:
    a   b   c
x   1   2   3
y   4 NaN   7
z NaN   9  10

指定した列名での欠損値を含む行を除く。

In [27]: df.dropna(subset=['a'])
Out[27]:
   a   b  c
x  1   2  3
y  4 NaN  7

指定した行名での欠損値を含む列を除く。

In [29]: df.dropna(axis=1, subset=['y'])
Out[29]:
    a   c
x   1   3
y   4   7
z NaN  10

160708 追加

カラムcolumnの値valueが全部NaNのカラムを削る。
axis=1how='all'を指定する。

In [80]: import numpy as np

In [81]: df = pd.DataFrame([[1,2,np.nan],[np.nan,np.nan,np.nan],[3,4,np.nan]])

In [82]: df
Out[82]: 
     0    1   2
0  1.0  2.0 NaN
1  NaN  NaN NaN
2  3.0  4.0 NaN

In [83]: df.dropna(axis=1, how='all')
Out[83]: 
     0    1
0  1.0  2.0
1  NaN  NaN
2  3.0  4.0

indexの場合は、axis=0

In [84]: df.dropna(axis=0, how='all')
Out[84]: 
     0    1   2
0  1.0  2.0 NaN
2  3.0  4.0 NaN

マニュアル

Pandas Document