欠損値の処理
メニューを表示するにはスワイプしてください
実世界のデータセットでは欠損データが一般的であり、分析やモデルに影響を与える可能性があります。欠損データの主な3つのタイプは次のとおりです。
- 完全にランダムな欠損(MCAR):欠損がいかなるデータとも無関係で発生する場合;
- ランダムな欠損(MAR):欠損が観測されたデータのみに関連している場合;
- 非ランダムな欠損(MNAR):欠損が欠損値自体に依存している場合。
適切な欠損値処理戦略の選択は、欠損のタイプによって異なります。不適切な処理は、バイアスのある結果、分析の弱体化、信頼性の低い予測につながります。
12345678import pandas as pd import seaborn as sns titanic = sns.load_dataset("titanic") # Find missing values in each column print("Missing values per column:") print(titanic.isnull().sum())
定義
インピュテーションとは、欠損値を平均値、中央値、最頻値などの代替値で置き換える処理です。インピュテーションは、さらなる分析やモデリングのためにデータセットの構造とサイズを維持するのに役立ちます。
補完法の種類
異なるデータ型には、欠損値を効果的に処理するための特定の補完戦略が必要:
- 平均値補完:数値特徴量に使用;観測値の平均で欠損値を置換;
- 中央値補完:データが歪んでいる場合など、数値特徴量に使用;観測値の中央値で欠損値を置換;
- 最頻値補完:カテゴリ特徴量に使用;最も頻繁に出現するカテゴリや値で欠損値を置換;
- 定数値補完:数値・カテゴリ特徴量の両方に使用;
0、-1、'unknown'などの固定値で欠損値を補完; - 前方補完(
ffill):時系列や順序付きデータに使用;直前の有効な観測値を前方に伝播して欠損を補完; - 後方補完(
bfill):時系列や順序付きデータに使用;次の有効な観測値で後方に欠損を補完; - 補間法:特に時系列の数値特徴量に使用;隣接するデータポイントをもとに線形や他の数学的手法で欠損値を推定。
データ型や分析の文脈に最も適した補完方法を選択。
123456789101112131415161718import pandas as pd import seaborn as sns # Load Titanic dataset titanic = sns.load_dataset("titanic") # Fill missing values in 'age' (numerical) with the mean titanic['age'] = titanic['age'].fillna(titanic['age'].mean()) # Fill missing values in 'deck' (categorical) with the mode titanic['deck'] = titanic['deck'].fillna(titanic['deck'].mode()[0]) # Drop 'embarked' and 'embark_town' columns (only 2 missing values each) titanic = titanic.drop(['embarked', 'embark_town'], axis=1) # Display the number of missing values after processing print("Missing values after processing:") print(titanic.isnull().sum())
注意
欠損値の削除は高速かつ簡単だが、特に欠損が広範囲に及ぶ場合は貴重なデータの損失につながる可能性がある。補完はより多くのデータを保持できるが、選択を誤るとバイアスが生じることがある。削除か補完かを判断する際は、欠損の量やパターン、特徴量の重要性を考慮。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 2
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 2