最終更新日:2021/9/4

欠損値を含む行や列を、まるごと削除して欠損値を除去(削除)する方法を説明します。

【説明すること】

1. 欠損値が1つでもあれば行ごと、列ごと削除する

欠損値が1つでもあれば、行を単位として、行ごと削除する場合は、

df.dropna(how='any', axis=0, inplace=True)

と書きます。列を単位として、列ごと削除する場合はaxis=1を指定します。

ポイントはhow='any'です。なお、デフォルトがhow='any'なので、省略可能です。
inplace=Trueは元のdfを上書きするオプションです。

【オプション】
how = : 'any'は1つでも欠損値があれば(デフォルト)。'all'は全てが欠損値ならば。
axis = : 0は行単位で調査して、行ごと削除。1は列単位で調査して、列ごと削除。

以下のcsvファイルを読み込んで例を挙げます。

a007_003a.csv

a007_003b.csv

2. 全てが欠損値ならば行ごと、列ごと削除する

全てが欠損値の時に削除する場合は、

df.dropna(how='all', axis=0, inplace=True)

と書きます。
ポイントはhow='all'です。
axis=0は行を単位として見て、行ごと削除です。axis=1は列を単位として見て、列ごと削除です。

3. 列を指定して、欠損値があれば行で削除する

調査の対象にカラム(列)を指定して、欠損値があれば行ごと削除する場合です。
列で調査するが、削除は行というケースで、この場合、

df.dropna(subset=['clm1','clm2'], how='any')

と書きます。

how='any'で、少なくともどちらかが欠損値の場合に削除です。
how='all'で、両方とも欠損値の場合に削除です。

4. 行を指定して、欠損値があれば列で削除する

調査の対象に行を指定して、欠損値があれば列ごと削除する場合です。
行で調査するが、削除は列というケースで、この場合、

df.dropna(subset=[0,1], how='any', axis=1, inplace=True)

と書きます。

ポイントはsubset=[]にindex番号を指定すること、axis=1を指定する事です。
how='any'で、少なくともどちらかが欠損値の場合に削除です。
how='all'で、全てが欠損値の場合に削除です。