変換系ツールについてさわってみた #alteryx #21 | Alteryx Advent Calendar 2016
DI部の大滝です。
当エントリは『Alteyx Advent Calendar 2016』の21日目のエントリです。
Alteryx Advent Calendar 2016 - Qiita
Alteryx Advent Calendar 2016 | シリーズ | Developers.IO
Alteryxにはいろいろなツールが存在しますが、今回は以下の変換系のツールについて触ってみました。 (全ツールの一覧についてはこちらを参照してください。)
- Arrange
- Count Records
- Running Total
- Transepose
- WeightedAverage
Arrange
Arrangeはデータフィールドを任意のルールで並べ替えができたりするツールです。
(Arrange Tool)
エクセルで作成したデータサンプルを入れ替えてみたいと思います。InputDataツールからエクセルデータのサンプルデータを読み込みます。サンプルデータは左から日付があり午前の開始、午前の終了、午後の開始、午後の終了という項目があります。開始、終了には適当な数値が入っているデータになります。このデータを使いデータを入れ替えたいと思います。
Arrangeツールを選択して、「Key Fileds」項目からdate選びます。次に「Output Fileds」でColumn->Addを選択してColumnを追加します。「Cloumn Header」 にStartと入力、am start、pm startを選択して「OK」ボタンをクリックします。
同様にEndカラムも作成します。
設定値はこんな感じになります。
実行してみます。結果を見るとdate項目に対してam start、am endが1レコード目にpm start、pm endが2レコード目になっておりデータが並び替えられたのがわかります。
Count Records
Count Recordsはデータ数をカウントするシンプルなツールです。
(Macro: Count Records)
先ほどArrangeツールで使用したサンプルに追加して実行してみます。62件のデータが取得できました。
Running Total
Running Totalツールは数値フィールド上の累積合計をしてくれるツールです。
(Running Total Tool)
先ほどから使用しているサンプルに追加してみます。「Create Runnning Total」からstartとEndを選択します。
実行してみます。RunTot_StartとRunTot_Endカラムが追加され、それぞれStartとEndの累積した合計が表示されます。
次に「Group By」からdateを選択してみます。
再度実行してみます。RunTot_StartとRunTot_Endカラムがdate単位の累積合計になっていることがわかります。
Cross TabとSummarize
Cross Tabツールは行→列変換してくれるツールで、クロス集計する際に使用するツールです。
(CrossTab Tool)
Summarizeツールは集計ツールです。グループ化、合計、空間オブジェクトの処理、文字列連結などを行います。
(Summarize Tool)
こちらの2つのツールは『Alteyx Advent Calendar 2016』の2日目のエントリ「クロス集計表の作成」で分かりやすく紹介しているのでそちらを参照してください!
Transepose
Transeposeツールは行→列変換を行うツールです。
(Transepose Tool)
こちらも先ほどから使用しているサンプルに追加してみます。「Key Fields」からdateを選択して、「Data Fileds」にam start、am end、pm start、pm endを選択します。
実行します。実行結果としてあまり意味がある変換ではないのですがデータが縦に並び替えられました。
WeightedAverage
WeightedAverageは加重平均を計算します。
(Macro: Weighted Average)
加重平均とは分析を行っている方にとっては当たり前の言葉かもしれませんが、そうでない方にはあまり聞かない言葉かもしてません。一言でいうと一般的な平均を求めるのと少し違い、値に重み付けをして平均を求めます。今回使用したサンプルデータ「Wyoming Schools.dbf」を使って具体的に説明したいとおもます。このサンプルデータは学校の一覧データで学校の住所、生徒数、学校のレベルなどの項目があるデータです。今回はこのデータを使って都市ごとの学校レベルの加重平均を求めました。通常の平均値を求めるなら都市ごとの学校レベルを合計して学校数で割ったのが平均値になります。今回は生徒数を考慮した加重平均を求めてみます。そうすることで学校レベルが同じ場合だとしても、生徒数を考慮し生徒数が多い方のがレベルが高くなるような平均値が求められます。
InputDataツールから「Wyoming Schools.dbf」ファイルを読み込みます。サンプルデータはこんな感じになっています。
今回使用したい項目のSchoolLeve項目がString型になっているため数値型になるようにします。InputDataツールにSelectツールを繋げてSchoolLevelのTypeをInt16に変換します。
SelectツールにWeightedAverageツールを繋げます。「Questions」の「Value Field」にSchoolLevelを指定し、「Weight Field」にEnrollmentを指定します。これでSchoolLevelに対して学校の生徒数で重み付けしたことになります。「Grouping Fields」にCityを選択し、都市ごとの学校レベルの加重平均値を求められるようにします。
実行してみます。都市ごとの学校レベルの加重平均値が求められました。
結果だけ見ても少し分かりづらいのでSummarizeツールを使って一般的な平均値と比較してみたいと思います。SelectツールにSummarizeツールを接続し都市ごとの学校レベルの平均値を求めます。再度実行します。Summarizeツールで求めた平均値はこんな感じになりました。
比較してみると、例えばAFTON都市の結果が一般的な平均値では「2.2」になっているのに対して加重平均値では「2.2.07131」となっており少し高い値になっていることが分かります。これは生徒数を考慮した結果の違いです。これが加重平均値になります。最後にこの加重平均値はどのように求めているかを説明したいと思います。まず数式で表すと以下のようになります。
Xが対象の値でそれに対してWが重み付けの値になります。今回の例で表すと以下のようになります。
実行結果がそのようになっているか調べてみます。Input DataツールにSelectツールとSortツールを接続して対象となる項目を絞り込み、都市でソートさせます。
AFTON都市について計算してみます。
先ほどの実行結果と同じになったことが分かります。
まとめ
今回はAlteryxにあるツールの中でも変換系のツールについて触ってみました。明日は弊社甲木による「コマンドラインからAlteryxワークフローを起動する」です。お楽しみにしてください!