このページは解答編です。
↓ネ
↓タ
↓バ
↓レ
↓防
↓止
答えと解説
設問はこちらでした。
P-032: レシート明細データ(receipt.csv)の売上金額(amount)について、25%刻みでパーセンタイル値を求めよ。
※データの持ち方として、横持ち(パーセンタイルと各フィールドとして持つ)と縦持ち(パーセンタイルと値のリストとして持つ)の二つのタイプでデータを整形してください
解答ワークフローは以下のようになります。
今回は、パーセンタイルを計算する問題です。パーセンタイルは集計ツールで簡単に得ることができますが、この問題では25%、50%、75%、100%の4通りのパーセンタイルを得る必要があります。集計ツールであれば一度に出力することができますが、実際に欲しいデータの持ち方というのがしばしば異なります。
今回はより実践的な内容として、データの持ち方についても見ていきたいと思います。サンプルのアウトプットとして、横持ち、縦持ちを提示しています。
データの持ち方について
今回欲しいデータは、各パーセンタイルに対しての売上金額(amount)の値となります。例えば、フィールド名がパーセンタイル、各フィールド内にその値があるような場合はこちらのようなデータの持ち方になります。
このようなデータの持ち方を横持ちと呼称しています。
次に、2つのフィールドがあり、片方は各パーセンタイルの名称が格納され、それにセットとなる値をもう一方のフィールドに持つ、つまり以下のようなデータの持ち方を考えます。
このようなデータの持ち方を縦持ちと呼称しています。
一般的に、縦持ちの方が変化に強いデータの持ち方です。例えば、パーセンタイルの区切りを10%ずつ取りたい、といった場合はフィールド名が変わらず持つことが可能です。ただ、一般的に横持ちの方が人間が理解しやすい表であることも多いです。
それぞれ、持ち方によって善し悪しがあるので、目的によって使い分けられることが多いです。
横持ち
それではまず横持ちでパーセンタイルを作成していきたいと思います。縦持ちで作成する場合も、まず横持ちでデータを作成してから縦持ちに変換する、という手法を取ります。
まず、型の変更からになります。今回は売上金額(amount)を計算していくので、数値型(Int16)にしておきます。不要な項目も削除します。
次に集計ツールを使ってパーセンタイルを計算します。
パーセンタイルを取得したい値をまず選択し(①)、追加ボタンを押し、ドロップダウンメニューから「パーセンタイル」を選択(②)、その後、アクションのところに項目が追加されるため、出力フィールド名を、例えば25%の値であれば「0.25」などと記入し(③)、下にあるオプション設定のところでパーセンタイルである「25」を入力します。
これを、欲しい分だけ行います。今回であれば、25%、50%、75%、100%の4回行います。
これにより、以下のようなデータが得られます。
実際のワークフローとしては以下のようになります。
縦持ち
次に、縦持ちにしていきます。横持ちで得られた結果をそのまま使っていきます。
横持ちのデータを縦持ちのデータに変換する場合は、転置ツールを使います。
転置ツールの使い方としては、キー列はそのまま残し、データ列にチェックが入っているものに対して項目名と値を二つのフィールドにそれぞれ対応するように格納します。概念的には以下の図の通りです(言葉だけだとわかりにくいですね)。
実際に例でみていきましょう。
以下のように①のインプットデータの「No」「店舗」フィールドはいわゆるキーとなる列です。「りんご」「みかん」というフィールドは種類を示し、実際に格納されているデータは金額です。これは、「りんご、120円」「みかん、200円」といった風に「種類」と「金額」、というフィールドにまとめることが可能です。
つまり、キー列に「No」「店舗」、データ列に「りんご」「みかん」と設定することで、「りんご」列、「みかん」列は「項目名」(Name)、「値」(Value)という二つのフィールドに格納しています。
これは、いたずらに横方向にフィールドを増やすことなくコンパクトにデータを格納することができるということです。
なお、今回のワークフローでの設定は以下の通りです。すべてのデータを縦持ちに変換してしまいたいので、キー列側はすべてチェックしない状態にし、データ列側にすべてチェックを入れます。
これにより、以下のようなデータになります。
実際のワークフローは以下のようになります。
まとめ
今回も、集計の問題でしたが、集計ツールの中にはオプションとして下の方で設定があるケースがあるのでご注意ください。意外と見落としやすいです。
また、今回は転置ツールをご紹介しました。データの持ち方を変えるときには重宝するツールです。非常に応用の効くツールで、これが自由自在に扱えるとAlteryx中級者レベルです。
コメント