データの展開(データを表形式に変換)

                                                                                       by『前処理大全(第7章:展開)』


  • 展開:データの集計結果を表形式に変換する処理


次のようなときに展開処理利用

    • 簡単な集計処理の結果をわかりやすくする時
    • レコメンデーションに利用するデータを準備する時


※ SQLでの展開は大変なので、通常は、RかPythonで行う



7-1 横持ちへの変換

                                                                          - テーブルの横持ちと縦持ちの使い分けと変換

                      - データの形式を整えるところから始めよう


  • 縦持ち:
    1つのレコードがあるデータのある1つのデータ要素を表しており、データの集合を表すキー値とデータの要素の種類を表すキー値とデータの要素の値を持つ
  • 横持ち:
    レコード1つが1つのデータ集合となっており、データの集合を表すキー値と複数のデータの要素の値を持つ。

例)横持ち変換

ホテルの予約レコードが対象。予約テーブルから、顧客 / 宿泊人数ごとに予約数をカウントし、行をID、列を宿泊人数、値を予約数の行列(表)に変換する。

    • SQL
        • SQLには、横持ちに変換する関数がないので、CASE文を何度も書いて、横持ちに変換する必要あり。
      • 中間テーブルの内容
    • SQL全体
    • 結果


    • Python


7-2 スパースマトリックスへの変換

  • スパースマトリックス(疎行列):ほとんどの要素の値が0で、ごくわずかしか値が存在しない巨大な行列(表)のこと。


スパースマトリックスを縦持ちで表現した場合、ほとんどの要素の値が0なので、要素の値が0のときにレコードを持たないというルールにすれば、表現する行列は巨大なが、行数は多くならない。一方、スパースマトリックスを横持ちで表現した場合、要素の値が0のときでも行列を表現する必要があり、列数が非常に多くなる。

 RやPythonでは、縦持ちのデータ表現のまま、インターフェースで行列(表)のように表現できるライブラリがある。

例)7-1「縦持ち変換」で作成した行列をスパースマトリックスとして生成する。

  スパースマトリックスは、SQLでは出来ない

  • Python
    • スパースマトリックスにする前にデータをピボット化
    • スパースマトリックス化

機械学習Tips保管庫

データ解析、機械学習のための学習内容の保管庫。復習用。

0コメント

  • 1000 / 1000