欠損値の処理
メニューを表示するにはスワイプしてください
欠損値を扱える機械学習モデルは限られているため、データセットに欠損が残っていないか確認する必要があります。欠損値が存在する場合、次の2つの方法で対応できます。
- 欠損値を含む行を削除する方法
- 空のセルに代替値を補完する方法(インピュテーションと呼ばれる処理)
欠損値の特定
データセットの概要情報を出力し、欠損値の有無を確認するには、DataFrameの.info()メソッドを使用します。
12345import 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())
データセットには344件のエントリーがありますが、'culmen_depth_mm'、'flipper_length_mm'、'body_mass_g'、および'sex'の各列には344未満の非NULL値が含まれており、欠損データが存在することを示しています。
注記
Nullは欠損値の別名です。
各列の欠損値の数を特定するには、.isna()メソッドを適用し、その後に.sum()を使用します。
12345import 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())
欠損値を含む行は、次の方法で表示可能:
df[df.isna().any(axis=1)]
12345import 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)])
行の削除
最初と最後の行にはターゲット('species')および'island'の値のみが含まれており、有用な情報がほとんどありません。これらの行は、NaN値が2つ未満の行のみを保持し、それをdfに再代入することで削除できます。
123456import 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))
一方、残りの行には有用な情報が含まれており、NaN値は'sex'列のみに現れます。これらの行を削除する代わりに、欠損値を補完することができます。一般的な方法としては、SimpleImputerトランスフォーマーを使用します。これは次の章で説明します。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 2. 章 3
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 2. 章 3