自動化が難しいクレンジング作業
データ加工は技術で効率化できる部分が大きいが、データ検証やクレンジング作業は、自動化はなかなか難しいと感じている。ここからは、数値フィールドとカテゴリ値フィールドに対してデータ検証のポイントの一部を紹介する。
数値フィールドに対しては無効な値や極端に外れた値が入っていないかなどをチェックしている。
実際に筆者が目にした無効値として、「**」、「NA」、「-999999」などのわかりやすいものから、「16777215」(2の24乗引く1)といった、一見普通の数字に見えるものまで、さまざまなものがあった。
極端な値は、エラーなどに起因するデータとしてあり得ないほど大きい(小さい)値であり、統計学でいう外れ値とは、やや意味が異なる。センサから取得されたデータで特によく目にする。
どちらも、データのユニークな値とそれぞれの出現頻度、値の範囲などを見ることでチェックしている。この値を無視するか補完するかは、分析の目的に合わせて決めている。
カテゴリ値は、データの設計書に値の一覧が書かれていることが多いが、実際に見てみると値として想定されていないものが入っていることが多いため、毎回中身を全て見ている。
また、JANコードや各種IDなど、桁数の多い数字のカテゴリ値データが、データを受領するまでに経た処理の間に浮動小数表記(4.97163E+12などの表記で、下位の桁が落とされてしまっている)になっていることもあった。表計算ソフトなどで読み込み、上書き保存してしまうとこの状態になりやすく、下位の桁がなくなってしまうと復元できないので注意が必要である。
また、商品名称や会社名、住所などが手入力で入力されている場合は「表記ゆれ」の問題が頻発する。会社名の(株)表記のゆれ(○○株式会社と○○<株>)や、英数字の大文字小文字、全角半角の不統一がよく見られる。この、表記ゆれを正す操作を「名寄せ」と呼び、ある程度名寄せを簡単にするツールなども開発されてはいるが、ドメイン知識や人間の判断が必要な場面もまだ多い。
これらの検証に対しても、データのユニークな値と、それぞれの出現頻度を見ている。結局人の目で見るのが確実で、見るべき量を最小限にする方向に努力しているというのが現状である。