Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 欠損値の処理 | Scikit-learnによるデータの前処理
Pythonによる機械学習入門

book欠損値の処理

メニューを表示するにはスワイプしてください

欠損値を扱える機械学習モデルは限られているため、データセットに欠損が残っていないか確認する必要があります。欠損値が存在する場合、次の2つの方法で対応できます。

  • 欠損値を含む行を削除する方法
  • 空のセルに代替値を補完する方法(インピュテーションと呼ばれる処理)

欠損値の特定

データセットの概要情報を出力し、欠損値の有無を確認するには、DataFrameの.info()メソッドを使用します。

12345
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df.info())
copy

データセットには344件のエントリーがありますが、'culmen_depth_mm''flipper_length_mm''body_mass_g'、および'sex'の各列には344未満の非NULL値が含まれており、欠損データが存在することを示しています。

Note
注記

Nullは欠損値の別名です。

各列の欠損値の数を特定するには、.isna()メソッドを適用し、その後に.sum()を使用します。

12345
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df.isna().sum())
copy

欠損値を含む行は、次の方法で表示可能: df[df.isna().any(axis=1)]

12345
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df[df.isna().any(axis=1)])
copy

行の削除

最初と最後の行にはターゲット('species')および'island'の値のみが含まれており、有用な情報がほとんどありません。これらの行は、NaN値が2つ未満の行のみを保持し、それをdfに再代入することで削除できます。

123456
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') df = df[df.isna().sum(axis=1) < 2] print(df.head(8))
copy

一方、残りの行には有用な情報が含まれており、NaN値は'sex'列のみに現れます。これらの行を削除する代わりに、欠損値を補完することができます。一般的な方法としては、SimpleImputerトランスフォーマーを使用します。これは次の章で説明します。

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  3

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  3
some-alt