Detect and fix data issues
IntelliJ IDEA は、pandas DataFrame に読み込まれ、Jupyter Notebook セルに表示されたデータセットを自動で分析できます。},{ IDE は、欠損値、外れ値、重複行、相関のある列などの潜在的な問題をハイライトし、モデリング前のデータ前処理を容易にします。},{
IntelliJ IDEA は、次の条件を満たす DataFrame を自動で分析します。},{
10 万行以内であること。
列数が 200 を超えないこと。
df、df.head()、df[x:y]、df.loc(.. .)、またはdf.iloc(...)を使用して表示されます。
少なくとも 1 件の課題が見つかった場合、DataFrame ツールバーに データセットの課題 ボタンが表示されます。
Fix data issues with AI
DataFrame ツールバーの
データセットの課題 ボタンをクリックします。 「データセット品質に関する問題 」ダイアログが開きます。

修正したい課題を選択し、 AI で修正 ボタンをクリックします。

提案された変更を含む新しいコードセルが、DataFrame の下に作成されます。},{
Common issues and how to handle them
Missing values
データセット内の一部のセルには値がなく、 NaN、 なし 、または空の文字列として表される場合があります。 これはデータ収集、統合、またはファイルのインポート時によく発生します。 無視すると、欠損値が分析にバイアスをもたらす場合があります。 一部の機械学習アルゴリズムは、欠損値を含むデータでは実行できません。
例えば、 salary 列に 6 個の空のセルが見つかりました。

この課題を処理する一般的な修正:},{
未知の値が多すぎる行または列を除去する:},{
df = df.dropna()未知の値を
0や不明のような定数に置き換えます。df['Name'] = df['Name'].fillna('Unknown')未知の値を列の平均・中央値・最頻値で置き換える:},{
df = df.fillna(df.mean())線形回帰や k-nearest neighbors などの機械学習モデルを使用して、欠損値を予測し置換する:
from sklearn.impute import KNNImputer imputer = KNNImputer(n_neighbors=5) df_imputed = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)
Duplicate rows
データセット内の一部の行が同一である場合があります。例えば、インポートの繰り返しやログ記録のエラーが原因です。},{ 無視するとバイアスが生じ、統計結果の信頼性が低下します。},{
例えば、データセットで重複行が 2 行見つかりました:},{

この課題を処理する一般的な修正:},{
すべての重複行を除去する:},{
df = df.drop_duplicates()最初の出現を除き、すべての重複を除去する:},{
df = df.drop_duplicates(keep='first')
外れ値},{
外れ値は、データセット内の他の多くの値と大きく異なるデータ点です。},{ 統計結果を歪め、機械学習モデルに影響を与える可能性があります。},{
外れ値は、絶対しきい値を超える、または統計的な境界から外れている値と定義できます。
一般的には、分析やターゲットとする集団とは異なる集団に属していると判断した場合のみ、外れ値を除去することが推奨されます。 詳細は、 この記事を参照してください。
例えば、 salary 列および age 列で外れ値が見つかりました。

この課題を処理する一般的な修正:},{
平均絶対偏差などの統計的メソッドを使用して、極端な値を発見する:
from scipy.stats import median_abs_deviation median = data['colname'].median() mean_absolute_deviation = median_abs_deviation(data['colname'], scale='normal') data['modified_z_score'] = (data['colname'] - median) / mean_absolute_deviation data['is_outlier'] = (data['modified_z_score'] > 3) | (data['modified_z_score'] < -3)極端な値を含む行を除去する:},{
df = df[df['salary'] < 20000]極端な値をしきい値で上限化する:},{
df['salary'] = np.where(df['salary'] > 20000, 20000, df['salary'])外れ値の影響を抑えるために値を変換する(例:対数変換を適用):},{
df['salary_log'] = np.log1p(df['salary'])
定数列},{
データセット内の一部の列は、すべての行で同じ値を含む場合があります。このような定数列は、変動がないため、分析やモデルに有用な情報をもたらさないことがよくあります。},{ このような定数列は、変動がないため、分析やモデルに有用な情報をもたらさないことがよくあります。},{
例えば、定数値 USA を持つ country 列が見つかりました。

この課題を処理する一般的な修正は次のとおりです:},{
単一値の列をすべて除去する:},{
df = df.drop(columns=single_value_cols)