最終更新日:2021/9/4
欠損値を含む行や列を、まるごと削除して欠損値を除去(削除)する方法を説明します。
【説明すること】
- 1. 欠損値が1つでもあれば行ごと、列ごと削除する :
df.dropna(how='any', axis=0, inplace=True)
- 2. 全てが欠損値ならば行ごと、列ごと削除する :
df.dropna(how='all', axis=0, inplace=True)
- 3. 列を指定して、欠損値があれば行で削除する:
df.dropna(subset=['clm1','clm2'], how='any', inplace = True)
- 4. 行を指定して、欠損値があれば列で削除する:
df.dropna(subset=[0, 1], how='any', axis=1, inplace=True)
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ファイルを読み込んで例を挙げます。
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'
で、全てが欠損値の場合に削除です。