【Python×データ前処理】欠損値の削除・一括除外方法をPandasのメソッドを用いて解説

こんにちは、Kosei(@kay_diacc2)です!

データ分析や機械学習・AIモデル構築のために欠かせないデータクレンジング。その中でも欠損値の処理は分析・モデル精度向上という観点で非常に重要なプロセスと言えます。本記事では「Pythonを用いた欠損値データの除外方法」を解説します。

目次

欠損値の削除(除外)

欠損値データの除外は下記手順で実施します。

  1. データセットの準備
  2. PandasライブラリをもとにDataFrame変換
  3. dropna()メソッドで欠損値除去

dropna()

dropna()とは、欠損値除去のために用いられるメソッドです。

dropna()メソッドを用いた欠損値処理

データセットの準備

データセットを準備しておきましょう。PandasのDataFrameにも変換しておきます。今回データセットの例として下記を用います。

import pandas as pd
from io import StringIO

csv_data = \
    '''
    名前,性別,年齢,出身
    田中,女,21,京都
    佐藤,女,,山梨
    山田,男,30,
    高橋,,,東京
    '''

df = pd.read_csv(StringIO(csv_data))
print(df)
名前 性別 年齢 出身
0 田中 21 京都
1 佐藤 NaN 山梨
2 山田 30 NaN
3 高橋 NaN NaN 東京

欠損値を1つ以上含む行を一括除去

下記のように記載すると、欠損値を1つ以上含むレコード(行)は一括して削除されます。

df.dropna()
名前 性別 年齢 出身
0 田中 21 京都

欠損値を1つ以上含む列を一括除去

axis=1を指定すると、欠損値を1つ以上含むカラム(列)は一括して削除されます。

df.dropna(axis=1)
名前
0 田中
1 佐藤
2 山田
3 高橋

全て欠損値からなる行・列を除去

全てが欠損値からなる行を削除するには、how=”all”と指定します。

df.dropna(how="all")

一方で、全てが欠損値からなる列を削除するにはaxis=1を追加しましょう。

df.dropna(how="all", axis=1)

正常値(非欠損値)数に応じて行・列を除去

正常値(非欠損値)数に応じて行を除去する場合、thresh=nと指定します。(n:正常値数)

例えば、thresh=3と指定した場合、正常値数が3未満の行は全て削除されます。

df.dropna(thresh=3)
名前 性別 年齢 出身
0 田中 21 京都
1 佐藤 NaN 山梨
2 山田 30 NaN

正常値がn個未満の列を全て削除する場合は、axis=1を追加しましょう。

df.dropna(thresh=3,axis=1)
名前 性別 出身
0 田中 京都
1 佐藤 山梨
2 山田 NaN
3 高橋 NaN 東京

特定カラム(列)の欠損値に基づき行を削除

subset=[‘カラム名(列名)’]を指定すると、指定した列の値が欠損値に該当する行は全て削除されます。例えば、性別を指定した場合、下記のような出力結果となります。

df.dropna(subset=['性別'])
名前 性別 年齢 出身
0 田中 21 京都
1 佐藤 NaN 山梨
2 山田 30 NaN

欠損値の確認・可視化・欠損値補完方法について

本記事をご覧いただきありがとうございました!本記事ではデータクレンジングのノウハウとして「欠損値の確認・可視化方法」および「欠損値の補完方法」についても解説しています。是非ご覧ください!

データクレンジング:欠損値確認・可視化方法

データクレンジング:欠損値の補完方法

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
URLをコピーする
URLをコピーしました!
目次
閉じる