- AIでデータ分析-データの前処理(20)-欠損処理:グループ単位での代表値代入④
- 用いるデータの紹介
- AIの活用
- まとめ
AIでデータ分析-データの前処理(20)-欠損値処理:グループ単位での代表値代入④
このノートは、データ分析においてAIを使って何ができて何ができないかを検証するために、実際に試した結果をまとめたノートです。
今回はデータの前処理でよく行われるチェックリスト(20)-欠損値処理:グループ単位での代表値代入④ をAIを用いて行ってみたいと思います。
AIを用いることでいかに効率化できるのか、体験していただければと思います。
所要時間は10分ほどとなっています。
それでは、さっそく始めていきましょう!
データの紹介
今回用いる前処理練習用のcsvデータです。
サンプルデータはこちらから、チェックリストはこちらからダウンロードできます。
1行が1訪問を表すデータになっています。
AIの活用:geminiを活用
20-欠損値処理:グループ単位での代表値代入④
まずは欠損値の状況をヒーマップと棒グラフで確認します。
欠損値が残っている列、それぞれ約250行ずつ欠損値が発生していることが確認できます。
欠損値の埋め方を考えるにあたり、欠損値のある列のデータ型・分布を確認します。
・"来店手段"列
データ型を確認します。
データ型はobject型となっています。
分布を確認します。
徒歩が最も多いようです。
移動手段は距離に応じて決まりやすいと考えられるため、移動手段の欠損値は距離グループ単位で最頻値で埋めることにします。
距離に応じてグループ分けした列を作りたいため、まず距離をグループ分けする境界を探るべく、距離のヒストグラムを作成するようgeminiに依頼します。
結果を確認します。
ヒストグラムより10キロ以上をひとまとめのグループとし、距離を5つのグループに分けられそうです。
グループ分けの境界を指定し、グループ分けした新しい列を作成するようgeminiに依頼します。
結果を確認します。
自宅からの距離に応じて距離グループが割り当てられていることが確認できます。
それでは来店手段の欠損値を距離グループ単位の最頻値で埋めるようgeminiに依頼します。
コードと出力された結果を見ると、指定した方法で欠損値が埋められていることが確認できます。
・"購入金額"列
データ型を確認します。

float64(数値型)であることが確認できました。
外れ値が含まれていることが確認できます。
1.5IQRを基準に外れ値ではない値と外れ値の分布をそれぞれヒストグラムで確認します。

統計的に外れ値を示すものの、実際にあり得るデータかエラーの値か判別すべく、外れ値の分布をさらに詳しく確認します。

もしかしたら実際に168,600円の商品を20人が購入したということもありえますが、データフレームの他の列の値を確認すると
「滞在時間_秒」や「自宅からの距離_km」といった他のカラムでも非常に極端な値を示しています。
これはデータ入力エラーである可能性、あるいは非常に特殊なイベントによるものと考えられそうです。
今回はタスクが欠損値の補完であるため、これらの極端な値が補完に用いる代表値を大きく歪めることを防ぐ必要があります。
そのため「168,600]のように極端な値については、データの入力エラーとみなし、一度欠損値に変換した上で、他の欠損値と同じ方針で補完していきたいと思います。

また購入金額のヒストグラムから、分布は右に歪んでいることが確認されました。そのため外れ値の影響の少ない中央値を補完する代表値として用いたいと思います。
最後に購入金額は収入や年齢、性別の相関が強いと推察されるため、年収層、年代、性別をグループ単位として、グループ単位ごとの中央値で欠損値を補完するようgeminiに依頼します。
なお、細かい指定の処理でどのくらいの行数に対し欠損補完ができたか確認できるよう、処理ごとの対象となった行数も出力するように依頼してみます。
結果を確認します。
コードと出力結果から、"購入金額"の欠損が埋まったことが確認できます。
これで全ての欠損値の処理が完了できたことが確認できます。
まとめ
今回は前処理練習用のデータに対し、前処理チェックリスト(20)-グループ単位での代表値代入④ をAIを用いてできるか試しました。
結果はAIで代替できることを確認することができました。
AIでできることとできないことを把握し、うまく活用することで、データ分析もかなり効率化できそうですね!
AIでデータ分析-データの前処理(20)-欠損処理:グループ単位での代表値代入④ は以上となります!














