<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=1
とhow='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