毎週末ブートキャンプ開催中!

データのラングリング(クレンジングと整形)

自分で生成し取得した一次データであれ、他者が提供しているものを取得した二次データであれ、分析や可視化が可能となる状態に、クレンジングや整形と呼ばれる工程が必要となります。

この工程が人手がかかり泥臭く、退屈な工程であったりもするのですが、最近は手法の共有やツールが出揃ってきていることによって、かなり工程が洗練されてきました。

Exploratoryというツールではこのように紹介されています。

データラングリングとは、データの加工や整形などを含めた、データを分析するための前処理とも言うものですが、多くのデータ分析の実に80%の時間はここで費やされます。
Exploratoryでは、この作業を切り離したものとしてではなく、むしろデータの可視化や統計・機械学習のアルゴリズムを使った分析の一環として、シンプルですばやく、さらに再現可能な形で行える環境を提供しています。

https://exploratory.io/note/kanaugust/6235618967553110/note_content/note.html

ここでは全行程をリストします。具体的なやり方としてはGUIとよばれるアプリベース手法や、Pythonを使ったプログラミング的な手法があります。それらはデータビジュアライゼーション講習で学ぶことができますので、ご興味ある方は、受講を検討なさってください。

機械学習の有無に関わらず必ず必要な処理手順

読み込む前

  • 文字コードを確認する
  • リスト形式かマトリックス形式か確認する。
  • マトリックス形式であればリスト形式へ修正する。
  • ファイルフォーマットを確認する

列単位への処理

  • 不要な列を削除する
  • 列名を確認し、必要があれば適宜最適なものに修正する
  • データ型を確認し、アプリ上のデータ型認識を、必要があれば適宜最適なものに変更する
  • (必要に応じて)データの型を変換する(数値データへの変換、カテゴリーデータへ変換、対数化、正規化)
  • (必要に応じて)日時差の算出
  • (必要に応じて)季節や時間帯、平日休日といったカテゴリーデータの算出
  • (必要に応じて)位置情報データの付加(絶対値、移動量)
  • (必要に応じて)列の分割や結合、ある列を元にした別な列の生成などを行う
  • (必要に応じて)複数の列を一つの列へ転置する
  • (必要に応じて)指定した2つの列の値をkey/valueとして、新たに列を生成する
  • (必要に応じて)セル値で列を生成する
  • (必要に応じて)別なデータセットやWeb APIと結合する

行単位への処理

  • 重複の検出
  • 外れ値や不良データの検出とその対応(削除、補完)
  • 配列やオブジェクトを一セルあたり一つの値になるよう展開する

セル値への処理

  • 値の標準化(日付表記、数値や英語の全角半角表記など)
  • 繰り返し記号の実データ化
  • 単位表記がセル値に含まれている場合は削除。たとえばミリメートルとセンチメートルが混在しているなら統一する
  • 名寄せ/ファジーマッチング
  • Upper/Lower Case揃え
  • URLエンコーディング、HTMLエンティティされた文字列をアンエスケープ(通常テキスト化)する
  • 不要な空白文字を取り除く

機械学習に必要な処理

抽出

  • ランダムサンプリング
  • 恣意的な(顧客IDなどで集約、ある列のある値の幅による集約、など)サンプリング

分割

  • (機械学習など目的に応じて)学習データと検証データの分割

生成

  • (機械学習など目的に応じて)モデルを作る際に学習データが不均衡な場合、データの生成

この投稿をシェアする