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
- スパースマトリックスにする前にデータをピボット化
- スパースマトリックス化
0コメント